//閉包 基本用法def closure_my =
//呼叫閉包
closure_my.call()
closure_my()
//閉包能預設接收乙個引數
closure_my('hello closure')
//閉包接收多個引數
def closure1 =
closure1(1,2)
//閉包可以有預設值 再賦值 直接賦給j
def closure2 =
closure2("aa")
//柯里化閉包 動態給閉包新增預設引數 返回新的閉包
// curry 從左到右賦值 ncurry 從第幾個開始賦值 rcurry從右到左賦值
// 注意: 這個方法得到的新閉包不可以再給已經賦值預設值得引數賦值了
def closure3 =
def closure4 = closure3.rcurry("aa")
closure4.call("bb")
//對乙個物件呼叫() 表示呼叫這個物件上的call方法
//建乙個介面
inte***ce action
//新建乙個方法
def func(aa)
//執行方法
func(new action()
})//新建類 通過類的物件()呼叫call方法
class action1
}new action1()
//closure成員
def closure5 =
println closure5.parametertypes
// 得到引數型別 輸出:[int, char]
println closure5.maximumnumberofparameters
//最大引數個數 輸出:2
//閉包的 this owner delegate
class testclosure
closure7()
}}new testclosure().closure6()
/*** 輸出
* this is: testclosure@48e4374
* owner is: testclosure$_closure1@3e2e18f2
* delegate is: testclosure$_closure1@3e2e18f2cb
* this 定義它的時候 所在的類的this 靜態閉包當中為 class
* owner 定義它的時候 所在類的物件
* delegate 預設是owner
*///通過** 獲取**中的方法
class testfunc
}def closure8 =
def funcc()
closure8.delegate = new testfunc()
closure8()
//**策略 當**和類本身都有同乙個方法時 選擇哪個優先
//預設是 owner_first 預設是自己優先
= closure.delegate_first
// **優先
closure8()
Groovy閉包筆記
1.最後一行將會作為返回值 2.對於map型別,機引數列表中所有的map實參並組成map傳遞給第乙個形參。3.閉包可以設定預設值 4.it可以在有且僅有乙個未顯示宣告的引數時使用 5.閉包呼叫的標準寫法是 closurename.call 6.def定義的變數對 binding.variables....
隨筆 groovy閉包
class enclosing assert whatisthisobject this def whatisthis assert whatisthis this class enclosedininnerclass void run class nestedclosurescl assert n...
Groovy筆記 二 閉包
閉包應用模式 1.策略模式 def function closure clo function function 2.閉包引數 def closure closure new date string 3.模板方法模式 class resouces def write def read def clo...