Làm thế nào là khớp mẫu trong Scala được thực hiện ở cấp độ mã byte?
Nó giống như một loạt các if (x instanceof Foo)
cấu trúc, hoặc cái gì khác? Ý nghĩa hiệu suất của nó là gì?
Ví dụ, được cung cấp mã sau (từ Scala By Ví dụ trang 46-48), mã Java tương đương cho eval
phương thức sẽ như thế nào?
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 Tôi có thể đọc mã byte Java, vì vậy một đại diện mã byte sẽ đủ tốt cho tôi, nhưng có lẽ sẽ tốt hơn cho những người đọc khác biết nó trông như mã Java như thế nào.
PPS Cuốn sách Lập trình trong Scala có trả lời cho câu hỏi này và các câu hỏi tương tự về cách Scala được thực hiện không? Tôi đã đặt hàng cuốn sách, nhưng nó chưa đến.