Consultez le code suivant:Scala 2.8 - Problème potentiel avec des arguments nommés
// 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)
}
}
dire Maintenant, je dois plus tard pour définir une méthode d'accès pour le champ age
.
Cependant essayer de faire des noms de champs quelque chose comme ci-dessous n'est pas juridique et les noms des méthodes partagent le même espace de noms à 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)
}
}
donc je dois renommer soit l'argument du constructeur age
ou mon champ age
. De toute façon, je vais briser le code client, n'est-ce pas?
Y a-t-il un moyen de contourner ce problème? Ou est-ce un problème inhérent aux arguments nommés?
S'il vous plaît faire la lumière sur cela. Toute aide serait grandement appréciée.
Merci.