Ci ho provato:
class Foo(bar: Int)
vs:
class Foo(private val bar: Int)
e sembrano comportarsi allo stesso modo anche se non sono riuscito a trovare da nessuna parte dire che si (bar:
Int)
espande (private val bar: Int)
così la mia domanda è: sono identici / simili?
In una nota a margine, ho cercato di utilizzare -Xprint:typer
questi pezzi di codice e producono lo stesso codice tranne una riga aggiuntiva nella seconda. Come posso leggere quella riga aggiuntiva?
..
class Foo extends scala.AnyRef {
<paramaccessor> private[this] val bar: Int = _;
def <init>(bar: Int): this.Foo = {
Foo.super.<init>();
()
}
}
..
..
class Foo extends scala.AnyRef {
<paramaccessor> private[this] val bar: Int = _;
<stable> <accessor> <paramaccessor> private def bar: Int = Foo.this.bar;
def <init>(bar: Int): this.Foo = {
Foo.super.<init>();
()
}
}
..
val
.