我知道Scala中的==
方法與Java中的equals方法具有相同的語義。但是,我想了解何時應用於遞歸結構的實例。 例如,考慮了一堆表情:遞歸定義類型中的Scala和==方法
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
然後,當我有一個BinaryExp
的兩個實例,說obj1
和obj2
,確實obj1 == obj2
導致深(遞歸)相等測試?也就是說,如果obj1 == obj2
成立,那麼obj1
和obj2
代表相同的確切表達式樹嗎?
請注意,在所有類中,我依賴==
的默認實現(它不會在任何地方覆蓋)。