Swift中的Array如何知道它是否包含一个元素?

时间:2014-10-12 14:19:20

标签: cocoa cocoa-touch swift

Swift中的Array能够存储任何包含Struct,Enum和Class实例的Swift类型。但是没有函数==能够比较任何类型的Swift对象。 ===运算符也只能比较两个引用。所以我想知道,当函数contains()被调用时,Swift中的数组如何知道它包含一个元素。

1 个答案:

答案 0 :(得分:2)

如果你看一下函数签名:

func contains<S : SequenceType where S.Generator.Element : Equatable>(seq: S, x: S.Generator.Element) -> Bool

你看到数组中的元素必须是一个实现Equatable协议的类型,它只包含一个方法:

func ==(lhs: Self, rhs: Self) -> Bool

因此可以使用任何实现Equatable协议的类型。

如果您定义自己的类(或结构等),要使用contains,您只需要实现该协议。