Сопоставление с образцом, статическое или динамическое связывание

Я хотел знать в сопоставлении с образцом, как в следующем, говорим ли мы, что классы падежей связаны динамически или статически?

sealed trait Expr
case class Lit(n: Int) extends Expr
case class Add(l: Expr, r: Expr) extends Expr

class Eval {
  def eval(e: Expr): Int = e match {
    case Lit(n) => n
    case Add(l, r) => eval(l) + eval(r)
  }
}
class Printo {
  def printo(e: Expr): Unit = e match {
    case Lit(n) => print(" " + n + " ")
    case Add(l, r) => printo(l); print("+"); printo(r)
  }
}

//Test
object TestExpr { 
  def main(args: Array[String]) {    
    val eval = new Eval    
    val printo = new Printo

    val expr1 =
      Add(Add(Lit(4), Add(Lit(7), Lit(10))),
        Add(Lit(4), Add(Lit(7), Lit(10))))

    val x = eval.eval(expr1)    
    p + "" + println(" = " + x)    
  }
}

Как я могу знать, если Lit(n) или же Add(l, r) называются / связаны статически или динамически?

0 ответов

Другие вопросы по тегам