鉴于Scala中的这个定义:
class Foo(val n: Int) object Foo { def unapply(foo: Foo): Option[Int] = Some(foo.n) }
此表达式编译并返回ok
:
new Foo(1) match { case Foo() => "ok" }
为什么这甚至编译?我希望一个提取器Option[T]
暗示匹配模式只有一个参数.
这种模式Foo()
在这里意味着什么?它等同于Foo(_)
?
换句话说,什么是支持经验行为的语言规则.