[英]Scala: Is my `equals` method correct?
我为A
类写了一个equals
方法。
class A(x: Int, s: String) {
override def equals(that: Any) = that match {
case a: A => this.x == a.x && this.s == a.s
case _ => false
}
}
这是正确的吗?
更好的方法是在A的伴随对象上定义一个Ordering [A]实例。
object A{
implicit object aOrdering extends Ordering[A]{
override def compare(x:A,y:A):Int = ......
}
}
比您应等于:
override def equals(that: Any) = that match {
case a: A => {
val ordering = implicitly[Ordering[A]]
ordering.compare(this,a) == 0
}
case _ => false
}
这样,您可以重用您的代码,即scala集合以及此类需要订购的其他地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.