有人可以帮我理解这段代码
case "Foo" Foo(data) -> _ => { /*.. implementation */}
Run Code Online (Sandbox Code Playgroud)
我看到了Foo.unapply(数据)的用法,但我不明白这部分是什么
- > _
如何以及何时使用它
Tra*_*own 27
它看起来像有人是这样对自己好太聪明了.假设我有以下内容:
case class Foo[A](command: String, data: A)
object -> { def unapply[A, B](p: (A, B)) = Some(p) }
Run Code Online (Sandbox Code Playgroud)
现在我可以这样写:
scala> Foo("foo", (42, 'whatever)) match {
| case "foo" Foo(data) -> _ => data
| }
res0: Int = 42
Run Code Online (Sandbox Code Playgroud)
感谢Scala中缀模式的神奇之处,这相当于以下内容:
Foo("foo", (42, 'whatever)) match {
case Foo("foo", data -> _) => data
}
Run Code Online (Sandbox Code Playgroud)
除了中缀版本保证混淆和惹恼您的代码的未来读者.
归档时间: |
|
查看次数: |
1117 次 |
最近记录: |