swift - 将相等性定义为引用类型的标识?

标签 swift identity equality reference-type

我经常试图通过将 == 定义为 === 来使我的引用类型 Equatable。这允许我举一个例子来代替冗长的:

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

与:

collection.contains(object)

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

最佳答案

将相等性定义为同一性仅在不可能对一个对象进行两种不同表示的情况下才有用。否则,您最终会得到看起来相同的对象,但在进行相等性比较时会失败。

当您保留对象缓存时,这是可以的,确保相同的实体由单个对象表示。

如果“一个实体 - 一个对象”的规则被打破,您的对象在所有使用相等性的情况下都会变得无用,例如哈希集、 HashMap 和线性搜索。

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

相关文章:

ios - 如何在 swift (iOS) 中创建单选按钮和复选框?

ios - 如何检测键盘高度何时更新?

c# - C# 字符串相等比较中的 StringComparison.CurrentCultureIgnoreCase 有多昂贵?

C# - 字节数组 - byte[] - 有简单的比较器吗?

javascript - 两个函数相等吗?

ios - Xcode 6 : storyboard size not changing when selecting w:Regular h:Regular from w:compact h:regular

json - 如何在 Swift 中使用数组根解码 JSON

sql-server - 带文本的 SQLServer IDENTITY 列

c# - 试图覆盖 ClaimsIdentityFactory 上的 CreateAsync 函数

file - Cygwin ssh - 身份文件无法访问