有人可以帮助我理解这段代码吗
case "Foo" Foo(data) -> _ => { /*.. implementation */}
我看到了 Foo.unapply(data) 的用法
但我不明白这部分是什么
-> _
如何以及何时使用它
最佳答案
看起来有人为了自己的利益太聪明了。假设我有以下内容:
case class Foo[A](command: String, data: A)
object -> { def unapply[A, B](p: (A, B)) = Some(p) }
现在我可以这样写:
scala> Foo("foo", (42, 'whatever)) match {
| case "foo" Foo(data) -> _ => data
| }
res0: Int = 42
多亏了 Scala 中缀模式的魔力,这等价于以下内容:
Foo("foo", (42, 'whatever)) match {
case Foo("foo", data -> _) => data
}
除了中缀版本肯定会混淆和惹恼你的代码的 future 读者。
关于scala - 这个 Scala 符号 ->_ 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491574/