Scala 2.8 - 命名参数的潜在问题

时间:2010-02-24 19:03:08

标签: scala scala-2.8 named-parameters

请考虑以下代码:

// 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。无论哪种方式,我都会打破客户端代码,不是吗?

有没有可能解决这个问题?或者这是命名参数的固有问题吗?

请对此有所了解。任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:2)

第二个代码块进行编译,前提是代替/* some code that gives integer */占位符注释。