2010-02-24 5 views
1

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.

Répondre

2

Le deuxième bloc de code fait compile, à condition de mettre quelque chose à la place du commentaire d'espace réservé /* some code that gives integer */.

Questions connexes