==
Scalaのメソッドは、Javaのequalsメソッドと同じセマンティクスを持っていることを私は知っています。ただし、再帰構造のインスタンスに適用する場合を理解したいと思います。たとえば、一連の式について考えてみます。
abstract class Exp
abstract class BinaryExp(l:Exp, r:Exp) extends Exp
case class Plus(l:Exp, r:Exp) extends BinaryExp(l,r)
case class Minus(l:Exp, r:Exp) extends BinaryExp(l,r)
case class Mult(l:Exp, r:Exp) extends BinaryExp(l,r)
case class Div(l:Exp, r:Exp) extends BinaryExp(l,r)
case class Num(v:Int) extends Exp
次に、たとえばとの2つのインスタンスがある場合、BinaryExp
結果obj1
はobj2
深いobj1 == obj2
(再帰的な)同等性テストになりますか?つまり、がobj1 == obj2
成立する場合、obj1
およびobj2
が同じ正確な式ツリーを表すことが保証されていますか?
すべてのクラスで、のデフォルトの実装に依存していることに注意してください==
(どこでもオーバーライドされません)。