本质上类似于val 和 def 之间细微差异的问题。我想知道拥有成员单例对象之间的语义区别是什么:
class Text {
...
object Whitespace { def unapply(s :String) =
if (s.forall(_.isWhitespace)) Some(s) else None
}
}
和
class Text {
...
val Whitespace = new { def unapply(s :String) =
if (s.forall(_.isWhitespace)) Some(s) else None
}
}
我知道两者是如何转换为字节码的,但是我可以用代码中的一个来做什么,而我不能用另一个呢?