2

以下は私のコードスニペットです:

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に対して同じ警告が出ないのですか? 私が見逃しているものはありますか?ありがとう

4

2 に答える 2