나는 노력하고있다 :
class Foo(bar: Int)
vs :
class Foo(private val bar: Int)
그리고 그들은 어디에서나 (bar:
Int)
확장 할 수 없다는 것을 알지 못하더라도 동일하게 행동하는 것 같습니다. (private val bar: Int)
제 질문은 동일합니까?
참고로, -Xprint:typer
이 코드 조각에 사용하려고 시도 했으며 두 번째 코드의 추가 줄을 제외하고 동일한 코드를 생성합니다. 그 여분의 줄을 어떻게 읽습니까?
..
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
됩니다.