groovy閉包基本用法

2021-08-07 01:38:24 字數 1609 閱讀 3613

//閉包 基本用法

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...