cocoa - Swift 中的数组如何知道它是否包含元素?

标签 cocoa cocoa-touch swift

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/

相关文章:

swift - 在后台点击 Swift 时禁用关闭弹出框

ios - 如何在用户退出时暂停我的应用程序,并在他们重新进入应用程序时恢复应用程序?

ios - 我什么时候应该调用 [NSUserDefaults standardUserDefaults] registerDefaults :] to ensure that . xib 文件可以立即访问首选项?

objective-c - 多个 Xcode 安装

ios - 如何检测拖到那里的 subview 中的触摸(或获取哪个 subview 在其父 View 中点击下方的最快方法)

ios - 在 swift ios 中更新文本字段 ui

xcode - 如何修复 Xcode 6、Mac OS X Yosemite 或 Mavericks 中的 "code object is not signed at all In subcomponent:"?

objective-c - 对象(持有 NSMutableArray)在父/子类中具有不同的内容

swift - Cocoa/Swift 3.0 替换 NSNumberFormatter.isPartialStringValid

ios - 写入流 iOS 时的自旋锁(仅在模拟器上)