1
我试图实现一个等价关系的条款,我也想匹配一些模式。然而,我的关系是对称的,因此,模式匹配也必须反映这一点。与变量绑定匹配的替代模式?
看一看下面的例子:
abstract class Term
case class Constructor(txt:String) extends Term
case class Variable(txt:String) extends Term
case class Equality(t1:Term, t2:Term)
def foobar(e:Equality) = e match {
case Equality(Variable(x),Constructor(y)) => "do something rather complicated with x and y"
case Equality(Constructor(y),Variable(x)) => "do it all over again"
}
逸岸,我想这样做
def foobar(e:Equality) = e match {
case Equality(Variable(x),Constructor(y)) | Equality(Constructor(y),Variable(x))
=> "yeah! this time we need to write the code only one time ;-)"
}
然而,正如例如注意在here,这是不允许的。有人对这类问题有一个很好的解决方案吗?任何帮助/指针非常感谢。
我怀疑我必须像你的答案中描述的那样做,但希望有一个简单的解决方案:D无论如何,我更喜欢你的第二个想法更多b因为我希望编译器能够使用后向追踪,即如果有其他几十个其他案例语句,就会产生更高效的代码。 – 2013-05-12 07:29:06