It се oks как кто-то путь слишком умный для своих же благ. Предположим, что у меня есть следующие:
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://stackoverflow.com/questions/7888944/scala-punctuation-aka-symbols-and-operators –
Кстати, вы можете легко понять этот код, если вы используете intellij http: //gyazo.com/dcf31d20ccb925bed0e302fd45df7710.png, или если вы обработали его с помощью рентгеновского снимка scala http://scastie.org/2026 – OlegYch