为什么 Swift 类默认不可散列?

Nov*_*tor 6 class swift

类有一个身份,它们的 hashValue 很容易就是它们在内存中的地址。为什么不是这样呢?

Ale*_*ica 0

因为基于身份的它根本没有多大用处hashValue

这是一个例子:

假设我正在组合来自两个不同来源的两组数据并检查重复项。一种常见的方法是将两者添加到Set. 这些对象肯定具有唯一的身份(即不同的地址)。如果这意味着它们也有唯一的hashValue,那么将不会检测到任何重复项。

使用 a 进行重复之所以有效,Set首先是因为hashValue隐含了重复的定义。你的提议将打破这一点。