我目前正在尝试使用Scala的模式匹配。目前我所知道的是,以操作符命名的提取器是左结合的,而以方法或类型命名的提取器是右结合的。
我的当前方法大致如下:
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
}
}
这有点让人不太愉快,因为我需要反向写我的匹配项或反向匹配它们,这是由于右结合性导致的。如果可以的话,我更喜欢像这样写:
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
}
}
有没有办法为提取器保留一些易读的名称并使其左联想?
谢谢您的帮助。