Scala:修改字段

时间:2014-05-14 15:55:53

标签: scala

为什么输出是-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

2 个答案:

答案 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