swift4中hashable协议有什么用?

Pri*_*esh 1 protocols hashable swift

请解释如何在 swift 中使用哈希协议。Apple 将 hashable 定义为“一种提供整数和哈希值的类型”。好的,但什么是哈希值?

Lea*_*ner 5

为了使对象符合 Hashable,我们需要提供一个 hashValue 属性,该属性将为每个实例返回一个唯一的、一致的数字。Hashable 协议继承自 Equatable,因此您可能还需要实现 == 函数。

注意:如果两个对象使用 == 比较相等,它们也应该生成相同的散列值,但反之则不然——散列冲突可能发生。

在 Swift 4.1 之前,符合 Hashable 很复杂,因为您需要手动计算 hashValue 属性。在 Swift 4.1 中,如果所有属性都符合 Hashable ,则可以代表您合成 hashValue 。Swift 4.2 引入了一个新的 Hasher 结构,它提供了一个随机种子的通用哈希函数,让我们的生活更轻松。参考更多