1
考虑下面的代码中潜在的问题:斯卡拉2.8 - 与命名参数
// 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
。无论哪种方式,我将打破客户端代码,不是吗?
是否有任何可能的解决方法?或者这是命名参数的固有问题?
请大家澄清一下。任何帮助将不胜感激。
谢谢。