我从GroovyConsole获得了这个程序。我在这里复制以便于参考,
def aClosure = { String name ->
println "hi "+name
sayHello()
println wro4j
}
aClosure.delegate = new MyClass()
aClosure.resolveStrategy = Closure.DELEGATE_FIRST
def result = aClosure("Toto")
class MyClass{
String wro4j = "Wro4J rocks !!!"
void sayHello(){
println "Hello"
}
}
我无法弄清楚上面的代码是做什么的。
关于resolveStrategy
,delegate
和aClousre
是什么?
答案 0 :(得分:3)
闭包的委托是将在闭包内调用方法的类。换句话说,当调用sayHello()方法时,groovy会在MyClass中执行此方法的查找。
关于策略: DELEGATE_FIRST。使用此resolveStrategy设置,闭包将尝试首先解析对委托的属性引用。
这些是http://groovy.codehaus.org/api/groovy/lang/Closure.html所有策略的描述: