0

当我阅读 Advanced Swift 一书和“可哈希需求”一章时,我对这个解释感到困惑

两个相等的实例(由您的 == 实现定义)必须具有相同的哈希值。反之则不然:具有相同哈希值的两个实例不一定比较相等。

我如何理解“反向”情况,或者为什么具有相同哈希值的两个实例不一定比较相等。

4

1 回答 1

1

将哈希值视为给定对象实例的快速紧凑非唯一标识符。唯一的硬条件是:如果两个对象比较相等,根据==运算符,两个实例必须具有完全相同的哈希值。这里的所有都是它的 ;)

特别是,考虑到哈希值不是唯一的——如何给它们Int有限的范围?— 我们不能安全地假设具有相同哈希值的两个实例将进行同等比较。

于 2019-03-30T01:47:13.183 回答