次のコードを検討してください。
// 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
。いずれにせよ、クライアント コードを壊すことになりますね。
これを回避する方法はありますか? それとも、これは名前付き引数に固有の問題ですか?
これに光を当ててください。どんな助けでも大歓迎です。
ありがとう。