我经常发现自己想要将多个匹配器/提取器聚集到一行中,但似乎不允许这样做。 e.g:
text match {
case regex1(a) | regex2(a) => a + "-"
}
(即使a
与两个匹配器的类型相同)
所以我不得不像这样重构(当有几个这样的时候会变得丑陋,所有处理不同的匹配,混合内联响应)
text match {
case regex1(a) => op(a)
case regex2(a) => op(a)
}
def op(a: String) = a + "-"
有更干净的方式吗?这将在Scala中得到支持吗?
答案 0 :(得分:3)
否,这在一般情况下是不可能的。但是,有一些解决方法可能用于组合模式匹配案例:
case a @ _ if boolexpr(a) or boolexpr(a) =>
构建可能还有其他人。我认为这不会很快改变,因为它会鼓励写出神秘的机器/箱子。