2011-07-23 47 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