Scala의 패턴 일치는 바이트 코드 수준에서 어떻게 구현됩니까?
일련의 if (x instanceof Foo)
구조와 같습니까, 아니면 다른 것입니까? 성능에 미치는 영향은 무엇입니까?
예를 들어, 다음 코드 ( Scala By Example 페이지 46-48)가 주어지면 eval
메서드에 해당하는 Java 코드는 어떻게 생겼습니까?
abstract class Expr
case class Number(n: Int) extends Expr
case class Sum(e1: Expr, e2: Expr) extends Expr
def eval(e: Expr): Int = e match {
case Number(x) => x
case Sum(l, r) => eval(l) + eval(r)
}
추신 : Java 바이트 코드를 읽을 수 있으므로 바이트 코드 표현만으로도 충분하지만 다른 독자가 Java 코드로 어떻게 생겼는지 아는 것이 더 나을 것입니다.
PPS Programming in Scala 책 은 Scala가 어떻게 구현되는지에 대한 이와 유사한 질문에 대한 답을 제공합니까? 책을 주문했지만 아직 도착하지 않았습니다.