簡單定義一個閉包:
def greetings = {println “Hello,${it}”}
注意,這邊的it是閉包默認的參數,也就是當你的閉包只有一個參數時。你可以直接調用閉包:
greetings("Circle.");
當然,你如果不想使用提供it參數,你也可以指定自己的參數:
def greetings = {param -> println "hello, ${param}"}
。如果將閉包作爲最後一個參數傳遞給一個方法,你可以使用一種優雅的方式來調用該方法,例如:
def someMethod(param1, closure){
//code blocks
}
你就可以採用someMethod("dd"){print "${it}"}的方式來調用閉包。Groovy閉包的三個重要的內置對象:this,owner,delegate。一般情況下,delegate指向owner的值,可以通過設置delegate值來獲取groovy的元編程能力。
this對象永遠指向最外層的對象,owner對象指向包含當前閉包的對象,delegate一般指向owner對象。對於delegate指向要慎用,如果該閉包會在其他地方被使用,需要注意delegate的負面影響。