如何在字节码级别实现Scala中的模式匹配?
它是否像一系列if (x instanceof Foo)结构或其他东西?它的性能影响是什么?
例如,给定以下代码(来自Scala By Example第46-48页),该方法的等效Java代码如何eval?
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)
}
Run Code Online (Sandbox Code Playgroud)
PS我可以读取Java字节码,因此字节码表示对我来说已经足够了,但是对于其他读者来说,知道它看起来像Java代码会更好.
PPS Scala编程是否能够解答这一问题以及有关Scala如何实现的类似问题?我订购了这本书,但尚未到货.