当模式与单例对象匹配时,为什么Scala使用`equals`?

时间:2016-12-22 14:12:56

标签: scala pattern-matching

事实证明,在模式匹配中使用单例对象依赖于他们的equals方法:

trait Foo

object A extends Foo {
  override def equals(other: Any): Boolean = false
}

object B extends Foo {
  override def equals(other: Any): Boolean = true
}

val a: Foo = A
a match {
  case A => "is A"
  case B => "is B"
  case _ => "unknown"
}

// evaluates to "is B"

为什么不简单地使用引用相等(eq)?

0 个答案:

没有答案