Je ne fais que jouer avec la programmation de la métaclasse dans Groovy. Mais tout à coup, je faisais face à un petit problème que je ne pouvais pas me travailler ...Ajouter une méthode à la métaclasse
Voici le script simple:
// define simple closure
def printValueClosure = {
println "The value is: '$delegate'"
}
String.metaClass.printValueClosure = printValueClosure
// works fine
'variable A'.printValueClosure()
// define as method
def printValueMethod(String s){
println "The value is: '$s'"
}
// how to do this!?
String.metaClass.printValueMethod = this.&printValueMethod(delegate)
'variable B'.printValueMethod()
Est-il possible d'utiliser la méthode, mais définir le premier paramètre à l'appel objet? l'utilisation de délégué ne semble pas fonctionner ... L'affectation de méthodes qui ne font pas référence à l'appelant ne pose aucun problème. Le curry fonctionne-t-il ici?
Merci, Ingo
Nice. Merci. Je n'ai jamais pensé à cela ... Y a-t-il aussi un moyen pratique d'ajouter beaucoup de méthode d'aide statique à une classe (pas par catégorie). Par exemple Apache Commons IO FileUtils à la classe de fichier? – Ingo
ah ... votre édition répond également à ma question supplémentaire. Merci encore. – Ingo