【发布时间】:2015-08-10 08:36:55
【问题描述】:
我在下面定义了一个案例类Foo。我想覆盖== 的行为,以便在比较中忽略最后一个元素(optBar)。这是我尝试过的方法,它似乎有效。
case class Bar(i:Int)
case class Foo(i:Int, s:String, optBar:Option[Bar]) {
override def equals(o:Any) = o match {
case Foo(`i`, `s`, _) => true
case _ => false
}
override def hashCode = i.hashCode*997 ^ s.hashCode * 991
}
val b = Bar(1)
val f1 = Foo(1, "hi", Some(b))
val f2 = Foo(1, "hi", None)
f1 == f2 // true
我想知道hashCode的创建方法是否正确。我是从this link 那里得到的。
【问题讨论】:
标签: scala