Po prostu gram z programowaniem metaclass w Groovy. Ale nagle została skierowana mały problem, który po prostu nie mógł dostać pracę ...Dodaj metodę do metaklasy
Oto prosty skrypt:
// 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()
Czy możliwe jest użycie metody jednak ustawić pierwszy parametr do powołania obiekt? używanie delegata wydaje się nie działać ... Przypisanie metod, które nie odwołują się do wywołującego, nie stanowi problemu. Czy tu działa curry?
Dzięki, Ingo
Nice. Dzięki. Nigdy o tym nie myślałem ... Czy istnieje również wygodny sposób dodania dużej ilości statycznej metody pomocniczej do klasy (nie poprzez kategorię). Na przykład Apache Commons IO FileUtils do klasy plików? – Ingo
ah ... Twoja edycja odpowiada również na dodatkowe pytanie. Dzięki jeszcze raz. – Ingo