If you wondered how efficiently Scala constructs are being converted to Java, have a look a the following.
Note: this isn't Java but it does show some interesting details of what Scala constructs expand to.
After this you have to start looking at bytecode as Java disassemblers are having trouble disassembling Scala bytecode to Java.
–print
Print program with all Scala-specific features removed
$ scalac -print Main.scala
[[syntax trees at end of cleanup]]// Scala source: Main.scala
package testingscala {
final class Main extends java.lang.Object with ScalaObject {
def main(args: Array[java.lang.String]): Unit = {
scala.this.Predef.println("hello");
var i$1: scala.runtime.IntRef = new scala.runtime.IntRef(27);
var k: Int = 45;
i$1.elem = 3;
scala.this.Predef.println( scala.Int.box(k.+(Main.this.fn$1(i$1))))
}
final private[this] def fn$1(i$1: scala.runtime.IntRef): Int = i$1.elem.*(3);
def this(): object testingscala.Main = {
Main.super.this();
()
}
}
}