Próbowałem:
class Foo(bar: Int)
vs:
class Foo(private val bar: Int)
i wydaje się, że zachowują się tak samo, chociaż nie mogłem znaleźć nigdzie stwierdzenia, które (bar:
Int)
rozszerza się do, (private val bar: Int)
więc moje pytanie brzmi: czy są one identyczne / podobne?
Na marginesie, próbowałem użyć -Xprint:typer
tych fragmentów kodu i generują ten sam kod, z wyjątkiem dodatkowej linii w drugim. Jak mam przeczytać tę dodatkową linijkę?
..
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
.