【发布时间】:2023-03-09 07:11:01
【问题描述】:
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
谁能解释为什么?
【问题讨论】:
-
您对
Person的两个定义并不完全相同,因为第二个定义也会为_id生成私有getter 和setter 方法。
标签: scala syntax setter getter