Scalaの==
メソッドは、Javaのequalsメソッドと同じセマンティクスを持っています。しかし、再帰的構造のインスタンスに適用されるときを理解したいと思います。例えば 、表現の束考える:私はBinaryExp
、言うobj1
とobj2
の2つのインスタンスを持っているとき、深い(再帰的)平等テストでobj1 == obj2
結果を行い、その後再帰的に定義された型のスカラと==メソッド
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
を?つまり、obj1 == obj2
が保持されている場合、obj1
とobj2
は同じ正確な式ツリーを表しますか?
すべてのクラスで、デフォルトの実装==
(どこにでも上書きされません)に依存しています。