swift - [Foo.Type] 数组不存在 indexOf(Element)

标签 swift

Swift 的 CollectionType 提供了两种 indexOf 方法:一种直接获取元素,另一种获取谓词函数。如果我有一个类型为 [Foo.Type] 的数组(对于任何类 Foo),前者不存在;只有 indexOf 的谓词版本。这是为什么?

最佳答案

采用元素的indexOf 方法要求该元素必须符合Equatable 协议(protocol)。它是在受约束的协议(protocol)扩展中定义的,因此它仅在该约束成立时显示。

元类型(形式为 SomeType.Type)本身不能符合协议(protocol)(当前为 Swift 2.1)。因此,即使您可以在全局范围内定义对元类型进行操作的 == 运算符,您实际上也无法使元类型符合 Equatable 协议(protocol)。这是一个已知的语言限制。

在某些情况下(例如,将类型用作字典中的键时)您可以使用标准库 ObjectIdentifier键入以解决此限制。

关于swift - [Foo.Type] 数组不存在 indexOf(Element),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854219/

相关文章:

ios - 将 Objective-C 桥接到 Swift - 看不到文件

ios - 无法在 swift 中使用 Objective-c block

ios - AudioKit - 没有声音输出

ios - 无法将类型 '[(String)]' 的值分配给类型 'String!' 的值?

ios - VStack 的帧大小没有填满整个屏幕

ios - 使用 Alamofire 上传图片以及其他字符串数据

ios - Swift:子类 MKPolyline

ios - UICollectionView 挑战 : set height on the last cell to fit availabe space

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

ios - 如何从选定的表格 View 单元格中获取标题部分标题?