考虑以下代码:
// My code
class Person(var age: Int)
// Client's code
object Main {
def main(args: Array[String]) {
val p = new Person(age = 18)
println(p.age)
}
}
现在说稍后我需要为该age
字段定义一个访问器方法。
但是,尝试执行以下操作是不合法的,因为字段名称和方法名称在 Scala 中共享相同的命名空间:
// *** DOES NOT COMPILE ***
// My code
class Person(age: Int) {
def age = /* some code that gives integer */
}
// Client's code
object Main {
def main(args: Array[String]) {
val p = new Person(age = 18)
println(p.age)
}
}
所以我需要重命名构造函数参数age
或我的字段age
。无论哪种方式,我都会破坏客户端代码,不是吗?
有没有可能解决这个问题?或者这是命名参数的固有问题?
请对此有所了解。任何帮助将不胜感激。
谢谢。