以下は私のコードスニペットです:
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 メソッドで何が起こっているかというと、「match が完全ではない可能性があります。BinOp(_, _, ), UnOp( , _)」という入力で失敗するという警告が表示されます。BinOp、UnOp などの他のテスト ケースを考慮していないので、私にとっては完璧に見えます。完全
しかし、私の質問は、なぜdef simpleExp(xs: Expr): Exprに対して同じ警告が出ないのですか? 私が見逃しているものはありますか?ありがとう