Scala程序员应该知道这种写作:
class Person{
var id = 0
}
var p = new Person
p.id
p.id = 2
等于
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)
实际上。但是如果您对getter方法def id = _id
发表评论,p.id = 2
将导致编译错误,说
error: value key is not a member of Person
有人可以解释为什么吗?
答案 0 :(得分:8)
编译器是这样的,因为规范是这样说的。
请参阅第Scala Reference页。 86,§6.15作业。
请注意,没有什么能阻止您:
private
def id(implicit no: Nothing)