การจับคู่รูปแบบใน Scala ถูกนำไปใช้ในระดับ bytecode อย่างไร?
มันเหมือนกับชุดของif (x instanceof Foo)
โครงสร้างหรืออย่างอื่น? ผลกระทบด้านประสิทธิภาพคืออะไร?
ตัวอย่างเช่นเมื่อได้รับรหัสต่อไปนี้ (จากหน้าScala By Example 46-48) โค้ด Java ที่เทียบเท่าสำหรับeval
วิธีการจะเป็นอย่างไร
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 bytecode ได้ดังนั้นการแสดง bytecode จะดีพอสำหรับฉัน แต่อาจจะดีกว่าสำหรับผู้อ่านคนอื่น ๆ ที่จะรู้ว่ามันจะเป็นอย่างไรเมื่อเป็นรหัส Java
PPS หนังสือการเขียนโปรแกรมใน Scalaให้คำตอบสำหรับคำถามนี้และคำถามที่คล้ายกันเกี่ยวกับการใช้งาน Scala หรือไม่? ฉันสั่งหนังสือไปแล้วแต่ยังไม่มา