Я сейчас играю с совпадением шаблонов Scala. То, что я знаю до сих пор, заключается в том, что экстрактор, названный как оператор, получает ассоциативную ассоциацию, а экстрактор, названный как метод или тип, является правильным ассоциативным.Scala pattern matching extractors right ассоциативность
Моего текущий подход выглядит следующим образом:
object Foo {
def unapply(tokens: Seq[String]): Option[(Seq[String], String)] = // do something
}
// ...
object Main extends App {
Seq("hi", "bye") match {
case xs Foo foo2 Foo foo1 => // do something with result
case _ => // handle error
}
}
Это несколько unpleasuring, поскольку это требует от меня, чтобы написать мои матчи назад или соответствие их обратными из-за правую ассоциативность. Я предпочел бы, если бы я мог бы написать что-то вроде этого:
object Foo {
def unapply(tokens: Seq[String]): Option[(String, Seq[String])] = // do something
}
// ...
object Main extends App {
Seq("hi", "bye") match {
case foo1 Foo foo2 xs => // do something with result
case _ => // handle error
}
}
Есть ли способ, чтобы сохранить некоторое читаемое имя экстрактора и сделать его левоассоциативен?
Заранее спасибо.
Ах спасибо, это было то, что я искал! И backticks - ничто, у меня нет проблемы с тем, пока само правило все еще доступно для чтения. – bash0r