Atm我有很多:
t match {
case And(lhs, rhs) => { attach(lhs, rhs) }
case Or(lhs, rhs) => { attach(lhs, rhs) }
...
}
是否有可能以任何方式匹配任何具有签名Class(lhs: ExprTree, rhs: ExprTree)
?
答案 0 :(得分:0)
我会尝试使用特殊界面(特征)标记所有类似你的类。
object o {
trait AsTuple {
def a: ExprTree
def b: ExprTree
}
trait ExprTree
case object Leaf extends ExprTree
case class And(a: ExprTree, b: ExprTree) extends ExprTree with AsTuple
case class Or(a: ExprTree, b: ExprTree) extends ExprTree with AsTuple
def p: ExprTree = ???
p match {
case d: AsTuple => // attach(d.a, d.b)
}
}