我们如何使 SwiftUI 对象,特别是 Image,符合 Hashable 协议?
我知道它们符合 Equatable 协议,所以主要问题是如何获取哈希值或使用 hash(into:) 函数?
我知道它们符合 Equatable 协议,所以主要问题是如何获取哈希值或使用 hash(into:) 函数?
struct iPad: Hashable {
var serialNumber: String
var capacity: Int
}
Hashable
协议,且其两个属性也符合Hashable
协议,因此Swift会自动生成hash(into:)
方法。serialNumber
足以唯一标识每个iPad,因此不需要哈希容量。因此,我们可以编写自己的实现hash(into:)
方法,仅对该属性进行哈希处理。func hash(into hasher: inout Hasher) {
hasher.combine(serialNumber)
}
combine()
方法来向哈希表中添加更多属性,而您添加属性的顺序会影响最终的哈希值。