Swift中的Hashable
提示
- Swift 中的 Hashable 协议:
Hashable
协议为 Swift 对象提供hashValue
,用于比较实例的相等性。 - 比较实例的哈希值:通过实现
Hashable
协议,可以比较具有不同或相同属性值的实例的哈希值,以确定它们是否相等。 - 自定义哈希函数:可以通过定义
hash(into hasher: inout Hasher)
函数并使用hasher.combine()
来指定比较的属性,以控制哈希值的生成。
在 Swift 中,Hashable
是一个协议,为我们的对象提供了 hashValue
。hashValue
用于比较两个实例。
要使用 hashValue
,我们首先需要将类型(结构体、类等)与 Hashable
属性相符合(关联)。例如,
struct Employee: Hashable {
...
}
这里,我们已经使 Employee
结构体符合 Hashable
协议。
现在,当我们创建 Employee
的实例时,协议将为这些实例提供哈希值。
示例:Swift 可哈希协议(Hashable Protocol)
struct Employee: Hashable {
var name: String
}
let object1 = Employee(name: "Sabby")
let object2 = Employee(name: "Smith")
// 打印哈希值
print(object1.hashValue)
print(object2.hashValue)
输出
754256748862435114
-6408043519205941253
这里,object1.hashValue
和 object2.hashValue
分别返回 object1
和 object2
实例的哈希值。
注意:哈希值是一个长整数,根据您所使用的系统可能会有所不同,因此对于相同的代码,您可能会得到不同的值。