Swift 中 Equatable、Comparable 和 Hashable 协议详解
1. 引言
在 Swift 编程中,我们花费了大量时间学习如何对数据进行建模,了解了值类型和引用类型,以及它们有时能提供的“免费”特性,比如编译器自动合成的空初始化器。当我们遵循 Swift 标准库中的某些协议时,还能获得一些有用的行为。例如,遵循 CustomStringConvertible 协议并实现其所需的 description 属性,我们可以自定义类型实例在控制台的输出格式;遵循 Error 协议,类型实例就能作为错误从可能失败的函数中抛出。
除了上述协议,遵循标准库中的其他协议还能解锁更多常见行为。本文将介绍三个重要的协议: Equatable 、 Comparable 和 Hashable ,以及它们为自定义类型提供的特性。
2. Equatable 协议
2.1 初步尝试比较
首先,创建一个名为 Comparison 的新 playground 进行操作。我们要探讨的第一个特性是使用 == 运算符比较类型的两个实例。下面是定义 Point 结构体和创建两个相等实例的代码:
import Cocoa
var str = "Hello, playground"
struct Point
超级会员免费看
订阅专栏 解锁全文
829

被折叠的 条评论
为什么被折叠?



