14

誰かがこのコードを理解するのを手伝ってくれますか

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

Foo.unapply(data) の使用法が表示されますが、この部分が何なのかわかりません

-> _

いつ、どのように使用するか

4

1 に答える 1

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
}

中置バージョンがコードの将来の読者を混乱させ、困らせることが保証されていることを除いて。

于 2013-08-28T15:28:28.247 に答える