Самый простой способ сделать это - обернуть метод в замыкание следующим образом:
def printValueMethod(String s){
println "The value is: '$s'"
}
String.metaClass.printValueMethod = { -> printValueMethod(delegate) }
assert 'variable B'.printValueMethod() == "The value is: 'variable B'"
Идематический способ добавить метод без использования замыканий - создать класс категории и смешать егопримерно так:
class PrintValueMethodCategory {
static def printValueMethod(String s) {
println "The value is: '$s'"
}
}
String.metaClass.mixin(PrintValueMethodCategory)
assert 'variable B'.printValueMethod() == "The value is: 'variable B'"
Я не думаю, что карри может помочь в этом конкретном случае, поскольку вы не знаете значение делегата во время присвоения метаклассу.