首页 > 解决方案 > 对元素具有可识别约束的快速通用序列

问题描述

似乎它应该真的很容易 - 但我找不到任何方法将项目序列上的泛型限制为特定项目类型 - 在这种情况下 - 我想说我可以使用任何序列,只要组成序列的项目都是可识别的


     // none of these compile
     //
     struct GridView<List>  : View where List: Sequence, List.Type : Identifiable
     struct GridView<List, Item> : View where List: Sequence, Item: Identifiable, List.Type == Item
     struct GridView<List, Item>  : View where List: Sequence, Item: Identifiable, List.Type : Item    

有什么办法吗?目前,我只需拥有一个通用类型“Item” - 并采用 [Item] - 但理想情况下我想使用任何序列 - 不要强迫它成为一个列表。

标签: swift

解决方案


struct GridView<List: Sequence>: View where List.Element: Identifiable {
  // ...
}

Sequence定义了一个名为 的关联类型Element,您可以对其进行约束以使其符合Identifiable


推荐阅读