这个Groovy代码有什么作用?

时间:2011-07-23 04:48:32

标签: groovy

我从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"
}

}

我无法弄清楚上面的代码是做什么的。

关于resolveStrategydelegateaClousre是什么?

1 个答案:

答案 0 :(得分:3)

闭包的委托是将在闭包内调用方法的类。换句话说,当调用sayHello()方法时,groovy会在MyClass中执行此方法的查找。

关于策略: DELEGATE_FIRST。使用此resolveStrategy设置,闭包将尝试首先解析对委托的属性引用。

这些是http://groovy.codehaus.org/api/groovy/lang/Closure.html所有策略的描述: