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)
}
PS我可以读取Java字节码,因此字节码表示形式对我来说已经足够了,但其他读者可能更清楚知道它看起来像Java代码一样好。
PPS《Scala中的编程》一书是否对此问题以及有关如何实现Scala的类似问题给出了答案?我已订购这本书,但尚未到货。