Swift 中的数组能够存储任何 Swift 类型,包括 Struct、Enum 和 Class 实例。但没有函数 ==
能够比较任何类型的 Swift 对象。并且 ===
运算符也只能比较两个引用。所以我想知道,当函数 contains()
被调用时,Swift 中的数组如何知道它包含一个元素。
最佳答案
如果你看一下函数签名:
func contains<S : SequenceType where S.Generator.Element : Equatable>(seq: S, x: S.Generator.Element) -> Bool
您会看到数组中的元素必须是实现Equatable
协议(protocol)的类型,该协议(protocol)仅包含一个方法:
func ==(lhs: Self, rhs: Self) -> Bool
因此可以使用任何实现 Equatable
协议(protocol)的类型。
如果您定义自己的类(或结构等),则要使用 contains
您只需实现该协议(protocol)。
关于cocoa - Swift 中的数组如何知道它是否包含元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26326091/