我已经使用规范映射(在 scala 中)实现了一个集合包装器。现在,当重新定义equals(和hashCode)时,我希望包含我的集合包装器的集合使用引用相等,即“eq”。但是,我用于规范地图的集合应该使用真正的“等于”。我想出了以下解决方案:
override def equals(obj: Any) =
obj match {
case o: SetWrapper => (o eq this) || o.set == this.set
case _ => false
}
我的问题是,我真的需要这个吗?
(o eq this) || o.set == this.set
或者使用它就足够了吗?
override def equals(obj: Any) =
obj match {
case o: SetWrapper => o.set == this.set
case _ => false
}
我猜测库在调用等号之前会自动执行“eq”(使用 == 时),但我不确定。