我知道==
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
那么,当我有两个实例 aBinaryExp
时,比如说obj1
and obj2
,是否会obj1 == obj2
导致深度(递归)相等测试?也就是说,是否保证 ifobj1 == obj2
成立,然后obj1
和obj2
表示相同的精确表达式树?
请注意,在所有类中,我都依赖于==
(它不会在任何地方被覆盖)的默认实现。