我正在学习 Scala,但我很难理解它。我在其中一个教程中获得了一些 Scala 代码,但我无法理解一些事情。
这是代码:
class Person(val id:Int,
var firstName:String,
var lastName:String,
private var _age:Int) {
// these methods are identical to what would be created by var in the constructor
def age = _age
def age_=(newAge:Int) = _age = newAage
}
val me = new Person(45,"Dave","Copeland",35)
me.firstName = "David"
me.age = 36
我不明白:
_age
, 为什么不 age
,是否有任何特殊的好处或只是一个约定可以理解为私有(private)。 _=
在 def age_=(newAge:Int) = _age = newAage
这个声明在做什么。 最佳答案
就是这样声明getters and setters在斯卡拉。
why _age, why not age, is there any special benefit or just a convention to understand as private.
因为
age
已被 getter 声明所占用,因此您需要一个替代变量名。what is
_=
indef age_=(newAge: Int) = _age = newAge
what this statement doing.
这是对编译器的一个提示,即这是一个 setter 方法。在外部,年龄将作为一个属性公开,您可以这样调用:
val p = new Person(1, "a", "b", 10)
p.age = 42
println(p.age)
您没有显式调用
age_=
,但 setter 方法仍会被调用。 setter/getter 也是如此。
关于scala - scala中的 '_='是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40058604/