Bagaimana pencocokan pola di Scala diimplementasikan pada tingkat bytecode?
Apakah itu seperti rangkaian if (x instanceof Foo)
konstruksi, atau sesuatu yang lain? Apa implikasi kinerjanya?
Misalnya, dengan kode berikut (dari Scala By Example halaman 46-48), bagaimana kode Java yang setara untuk eval
metode tersebut akan terlihat?
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 Saya dapat membaca bytecode Java, jadi representasi bytecode akan cukup baik untuk saya, tetapi mungkin akan lebih baik bagi pembaca lain untuk mengetahui bagaimana tampilannya sebagai kode Java.
PPS Apakah buku Programming in Scala memberikan jawaban atas pertanyaan ini dan pertanyaan serupa tentang bagaimana Scala diterapkan? Saya sudah pesan bukunya, tapi belum sampai.