Swift indexOf(元素)不';[Foo.Type]数组不存在

Swift indexOf(元素)不';[Foo.Type]数组不存在,swift,Swift,Swift的CollectionType提供了两种indexOf方法:一种直接获取元素,另一种获取谓词函数。如果我有一个类型为[Foo.type]的数组(对于任何类Foo),则前者不存在;只有indexOf的谓词版本。这是为什么?采用元素的indexOf方法要求元素必须符合equalable协议。它是在受约束的协议扩展中定义的,因此它仅在该约束成立时显示 元类型(形式为SomeType.Type)本身不能符合协议(当前为Swift 2.1)。因此,即使您可以在全局范围内定义一个对元类型进行操作的

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

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

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

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