我经常试图通过将Equatable定义为==来创建我的引用类型。这允许我引用多个示例中的一个来替换verbose:

collection.contains(where: { $0 === object })

用:
collection.contains(object)

但我总觉得自己做错了什么。把平等定义为身份有什么坏处?这是一种常见的模式吗?

最佳答案

仅当一个对象不可能有两种不同的表示时,将相等定义为标识才有用。否则,最终会得到看起来相同的对象,但在进行相等比较时失败。
当您保存对象的缓存,确保相同的实体由单个对象表示时,这是正常的。
如果规则“一个实体一个对象”被破坏,那么在使用相等性的所有情况下(如哈希集、哈希映射和线性搜索),对象都将变得无用。

关于swift - 将等式定义为引用类型的标识?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39218533/

10-12 13:00