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
。無論哪種方式,我將打破客戶端代碼,不是嗎?
是否有任何可能的解決方法?或者這是命名參數的固有問題?
請大家澄清一下。任何幫助將不勝感激。
謝謝。