Подтвердить что ты не робот

Что этот символ scala → _ означает

может кто-то помочь мне понять этот код

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

Я вижу использование Foo.unapply(data) но я не понимаю, что эта часть

- > _

как и когда использовать его

4b9b3361

Ответ 1

Похоже, что кто-то слишком умный для своего же блага. Предположим, у меня есть следующее:

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 infix это эквивалентно следующему:

Foo("foo", (42, 'whatever)) match {
  case Foo("foo", data -> _) => data
}

За исключением того, что версия инфикса гарантированно запутает и раздражает ваших будущих читателей кода.