Scala中的模式匹配如何在字节码级别上实现?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)
}
P.S.我可以读取Java字节码,因此字节码表示对我来说足够好,但是对其他读者来说,它可能更好地知道它将如何看起来像Java代码。
P.P.S.本书Programming in Scala是否回答了有关Scala如何实施的类似问题?我已经订购了这本书,但还没有到。
你为什么不只是编译的例子,用Java字节码反汇编拆开呢? – Zifre 2009-04-15 23:36:39
我可能会这样做,除非有人先给出一个好的答案。但现在我想睡一觉。 ;) – 2009-04-15 23:41:44