Scala'da desen eşleştirme bayt kodu seviyesinde nasıl uygulanır?
Bir dizi if (x instanceof Foo)
yapı gibi mi yoksa başka bir şey mi? Performansa etkileri nelerdir?
Örneğin, aşağıdaki kod verildiğinde ( Scala By Example sayfalarından 46-48), eval
yöntemin eşdeğer Java kodu nasıl görünür?
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)
}
Not: Java bayt kodunu okuyabiliyorum, bu nedenle bir bayt kodu gösterimi benim için yeterince iyi olurdu, ancak muhtemelen diğer okuyucular için bunun Java kodu olarak nasıl görüneceğini bilmesi daha iyi olurdu.
PPS Scala'da Programlama kitabı bu ve Scala'nın nasıl uygulandığına dair benzer sorulara cevap veriyor mu? Kitabı sipariş ettim ama henüz elime ulaşmadı.