Добавить метод в метакласс

Я просто играю с программированием метаклассов в Groovy. Но внезапно я столкнулся с небольшой проблемой, с которой я просто не мог справиться ...

Вот простой сценарий:

// 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()

Можно ли использовать метод, но установить первый параметр для вызывающего объекта? использование делегата, похоже, не работает ... Назначение методов, которые не ссылаются на вызывающего, не проблема. Карри здесь работает?

Спасибо, Ingo

9
задан ataylor 17 January 2012 в 17:10
поделиться