为什么输出是-10?
class Person {
var age: Int = 0
def age_(newAge: Int) {
if( newAge > 0 ) age = newAge
}
}
object Main extends App {
val p = new Person
p.age = -10
println(p.age)
}
scalac Main.scala
斯卡拉主要
-10
答案 0 :(得分:1)
您可能想要编写 setter ,但由于语法错误,您最终得到了一个从外部可见的变量并且奇怪地命名了方法:
val x = new Person()
x.age_(3)
x.age_(-10)
x.age
// Int = 3
编写setter的正确方法可能是(注意方法名称中的尾随=
):
class Person {
private var privateAge: Int = 0
def age_=(newAge: Int) {
if( newAge > 0 ) privateAge = newAge
}
def age = privateAge
}
val x = new Person()
x: Person = Person@42c08a7e
x.age = -10
// x.age: Int = 0
x.age
// res7: Int = 0
答案 1 :(得分:0)
val p = new Person
p.age = -10
您正在将年龄值设置为-10