下面是我的代码片段:
sealed abstract class Expr
case class Var(name: String) extends Expr
case class Number(num: Double) extends Expr
case class UnOp(operator: String, arg: Expr) extends Expr
case class BinOp(operator: String, left: Expr, right: Expr) extends Expr
object CaseClassTest extends App {
def simplifyExp(xs: Expr): Expr = xs match {
case UnOp("-",UnOp("-", x)) => x
case BinOp("+",x,Number(0)) => x
case BinOp("*",x,Number(1)) => x
}
def describe(e: Expr): String = e match {
case Number(_) => "Number"
case Var(_) => "Var"
}
}
现在在 describe 方法中发生了什么,我收到一条警告,指出“匹配可能并不详尽。它会在以下输入上失败:BinOp(_, _, ), UnOp( , _) ”。它对我来说看起来很完美,因为我没有考虑 BinOp、UnOp 等其他测试用例。完美的
但是我的问题是为什么def simpleExp(xs: Expr): Expr没有出现同样的警告?有什么我想念的吗?谢谢