Что этот символ scala → _ означает может кто-то помочь мне понять этот код case "Foo" Foo(data) -> _ => { /*.. implementation */} Я вижу использование Foo.unapply(data) но я не понимаю, что эта часть - > _ как и когда использовать его Ответ 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 } За исключением того, что версия инфикса гарантированно запутает и раздражает ваших будущих читателей кода.
Ответ 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 } За исключением того, что версия инфикса гарантированно запутает и раздражает ваших будущих читателей кода.