2009-02-11 14 views
0

Existe-t-il un moyen d'utiliser des valeurs de paramètres par défaut avec des fermetures dans Groovy?Valeur par défaut pour les paramètres de fermeture dans Groovy

C'est ce que j'ai essayé jusqu'à présent:

class Persona { 
    String name 

    Persona(String name) { 
     this.name = name 
    } 

    String salute(String salute = "Hola") { 
     salute + ' ' + this.name 
    } 

} 

Persona.metaClass.salute2 = { 
    String salute = "Hola" -> 
     salute + ' ' + name 
} 

p = new Persona('john') 

print p.salute() 
print p.salute2() 

qui me donne le résultat suivant:

Hola johnnull john 

Il semble que l'appel à salute2() ignore la valeur par défaut de salut "Hola".

Répondre

2

Votre code fonctionne correctement comme prévu avec Groovy 1.6-RC2.

+0

vous avez raison, groovy 1.6.0 fonctionne très bien! – opensas

-1

Je ne crois pas que Groovy ait un moyen direct de faire ce que vous demandez. La manière de simuler ceci est que "salute2" soit une fermeture qui définit une autre fermeture à l'intérieur (celle qui concatène actuellement les variables "salute" et "name", où "salute" est un paramètre de fermeture)) , puis appelle cette fermeture, en envoyant la valeur "Hola".