¿Los parámetros del constructor de Scala están predeterminados a valores privados?
He estado intentando:
class Foo(bar: Int)
vs:
class Foo(private val bar: Int)
y parecen comportarse igual aunque no pude encontrar en ninguna parte diciendo que(bar: Int)
se expande a(private val bar: Int)
así que mi pregunta es, son estos idénticos / similares?
En una nota lateral, he estado tratando de usar-Xprint:typer
en estas piezas de código y producen el mismo código a excepción de una línea adicional en la segunda. ¿Cómo leo esa línea extra?
..
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>();
()
}
}
..