什么这个scala符号

有人可以帮助我理解这个代码

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
}

除了中缀版本保证混淆和惹恼你的代码的未来读者。

链接地址: http://www.djcxy.com/p/72835.html

上一篇: what this scala symbol

下一篇: > ' and ' <