我尝试实施了,我也想对阵一些模式方面的等价关系。 但是我的关系是对称的,因此,模式匹配必须反映这一点。
看看下面的例子:
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 ;-)"
}
然而,如上所述例如,在这里 ,这是不允许的。 是否有人有这样那样的问题一个很好的解决方案? 任何帮助/指针高度赞赏。