Scala lập trình viên phải biết rằng loại này viết:Mọi phương thức "setter" đều yêu cầu phương thức "getter" trong Scala?
class Person{
var id = 0
}
var p = new Person
p.id
p.id = 2
tương đương với
class Person{
private var _id = 0
def id = _id
def id_=(i: Int) = _id = i
}
val p = new Person
p.id // be equal to invoke id method of class Person
p.id = 2 // be equal to p.id_=(2)
có hiệu lực. Nhưng nếu bạn nhận xét phương pháp getter def id = _id
, p.id = 2
sẽ gây ra một lỗi biên dịch, nói
error: value key is not a member of Person
bất cứ ai có thể giải thích tại sao?
Hai định nghĩa 'Person' của bạn không chính xác tương đương, vì định nghĩa thứ hai cũng sẽ tạo ra phương thức getter và setter riêng cho' _id'. –