私はscalaテストを閲覧していましたが、「2つの新しいオブジェクト」を比較したときにコンパイラーが警告を生成する理由がわかりません。
これはテストの出力です:http: //lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/neg/checksensible.check
例:
checksensible.scala:12: warning: comparing a fresh object using `!=' will always yield true
println(new Exception() != new Exception())
^
メソッドを実装するクラスを作成すると、次の==
警告も生成されます。
class Foo(val bar: Int) {
def ==(other: Foo) : Boolean = this.bar == other.bar
}
new Foo(1) == new Foo(1)
warning: comparing a fresh object using `==' will always yield false
編集:oxbow_lakesに感謝します、==ではなくequalsメソッドをオーバーライドする必要があります
class Foo(val bar: Int) {
override def equals(other: Any) : Boolean = other match {
case other: Foo => this.bar == other.bar
case _ => false
}
}