最佳答案
Scala 中的模式匹配是如何在字节码级别实现的?
它是像一系列的 if (x instanceof Foo)
结构,还是其他什么东西? 它的性能含义是什么?
例如,给定以下代码(来自 Scala 示例页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 代码可能会更好。
P.P.S. 这本书 Scala 编程是否回答了这个问题以及类似的 Scala 如何实现的问题?我已经订购了这本书,但它还没有到。