Can you post a REPL transcript of the odd and surprising behavior? (With
==, not equals?)
scala> class A(val x: String) { def ==(that: A) = this.x == that.x }
defined class A
scala> val a = new A("")
val a: A = A@23b3aa8c
scala> val b = new A("")
val b: A = A@338cc75f
scala> a == b
val res2: Boolean = true
scala> (a: Any) == (b: Any)
val res3: Boolean = false
scala>
The example shows that ==
is an overloaded method, and behaves like one.
Except for numeric types
where we magically make it a multi-method.