Tôi hiểu rằng các trường tham số (như ví dụ x
trong ví dụ bên dưới) hoạt động như các trường thông thường; vì vậy bạn có thể tham khảo chúng trong các phương pháp:Các trường tham số và các tham số hàm của Scala
class Test(val x: Int) { // x is a parametric field
override def toString = "Test: " + x;
}
Tuy nhiên, nếu bạn thả từ khóa val
, mã vẫn biên dịch (và tìm kiếm và .class
đầu ra, x
vẫn là một thành viên của lớp). Vì vậy, tôi tự hỏi, sự khác biệt giữa các trường tham số (tức là, val x: Int
ở trên) và các đối số hàm tạo (x: Int
) là gì?
(Với Java ở phía sau đầu của tôi, tôi đã có dự kiến phạm vi của một nhà xây dựng như x
-không bao gồm một phương pháp như toString
.)
Tôi tin rằng 'x' vẫn có đến một thành viên nếu nó được tham chiếu trong ít nhất 1 phương thức, bất kể nó có được bắt đầu bằng 'val' hay không. – adelbertc