Tôi đã cố gắng:
class Foo(bar: Int)
vs
class Foo(private val bar: Int)
và họ dường như cư xử giống nhau mặc dù tôi không thể tìm thấy bất cứ nơi nào nói rằng (bar:
Int)
mở rộng để (private val bar: Int)
câu hỏi của tôi là, những cái này giống hệt nhau?
Mặt khác, tôi đã cố gắng sử dụng -Xprint:typer
trên các đoạn mã này và chúng tạo ra cùng một mã ngoại trừ một dòng bổ sung trong mã thứ hai. Làm thế nào để tôi đọc thêm dòng đó?
..
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
.