Swift indexOf(元素)不';[Foo.Type]数组不存在
Swift的Swift indexOf(元素)不';[Foo.Type]数组不存在,swift,Swift,Swift的CollectionType提供了两种indexOf方法:一种直接获取元素,另一种获取谓词函数。如果我有一个类型为[Foo.type]的数组(对于任何类Foo),则前者不存在;只有indexOf的谓词版本。这是为什么?采用元素的indexOf方法要求元素必须符合equalable协议。它是在受约束的协议扩展中定义的,因此它仅在该约束成立时显示 元类型(形式为SomeType.Type)本身不能符合协议(当前为Swift 2.1)。因此,即使您可以在全局范围内定义一个对元类型进行操作的
CollectionType
提供了两种indexOf
方法:一种直接获取元素,另一种获取谓词函数。如果我有一个类型为[Foo.type]
的数组(对于任何类Foo
),则前者不存在;只有indexOf
的谓词版本。这是为什么?采用元素的indexOf
方法要求元素必须符合equalable
协议。它是在受约束的协议扩展中定义的,因此它仅在该约束成立时显示
元类型(形式为SomeType.Type
)本身不能符合协议(当前为Swift 2.1)。因此,即使您可以在全局范围内定义一个对元类型进行操作的==运算符,但实际上您不能让一个元类型符合equalable
协议。这是一个已知的语言限制
在某些情况下(例如,在字典中将类型用作键时),您可以使用标准库类型来解决此限制