这个scala符号 - > _表示什么

时间:2013-08-28 15:02:38

标签: scala

有人可以帮我理解这段代码

case "Foo" Foo(data) -> _ => { /*.. implementation */}

我看到了Foo.unapply(数据)的用法 但我不明白这部分是什么

  

- > _

如何以及何时使用

1 个答案:

答案 0 :(得分:27)

看起来某人方式对自己的利益太聪明了。假设我有以下内容:

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
}

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