2011-07-23 141 views
1

我从GroovyConsole得到这个程序。我在这里复制以方便参考,这个Groovy代码是做什么的?

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

} 

我找不出上述代码的作用。

什么是resolveStrategydelegate相对于aClousre

回答

3

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

关于策略: DELEGATE_FIRST。通过设置resolveStrategy,闭包将首先尝试解析对代理的属性引用。

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