【发布时间】:2013-06-25 00:05:54
【问题描述】:
好的,这不是关于 vals 和 defs 或函数和方法之间的根本区别的另一个问题。我看到编译时:
val Extractor = new AnyRef { def unapply(s :String) => Some(s) }
val x = "hello" match { case Extractor(s) => s }
将 val Extractor 更改为 def Extractor 会破坏代码。为什么会这样?这有点令人失望,因为我希望完全透明,让我将实现从 vals(无论如何生成方法)更改为 defs,反之亦然。我想知道用一个而不是另一个可以做什么?
【问题讨论】: