2011-07-23 9 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" 
} 

} 

私は上記のコードが何であるか把握できませんでした。

aClousreについては、resolveStrategydelegateとなりますか?

答えて

3

クロージャのデリゲートは、クロージャ内でメソッドが呼び出されるクラスです。言い換えれば、sayHello()メソッドが呼び出されると、GroovyはMyClass内からこのメソッドの参照を実行します。

戦略について: DELEGATE_FIRST。このresolveStrategyセットを使用すると、クロージャはまずデリゲートへのプロパティ参照を解決しようとします。

これらはすべての戦略の説明です。http://groovy.codehaus.org/api/groovy/lang/Closure.html

関連する問題