1
結合下面的代碼會產生一個斷言錯誤Groovy的關鍵字參數
def foo(a,b,c='awesome',d=null) {
assert d
}
foo(1,2,d='bar')
爲什麼會給出一個錯誤?爲什麼d的關鍵字分配不工作?我發現這與Python關鍵字參數非常不同。
結合下面的代碼會產生一個斷言錯誤Groovy的關鍵字參數
def foo(a,b,c='awesome',d=null) {
assert d
}
foo(1,2,d='bar')
爲什麼會給出一個錯誤?爲什麼d的關鍵字分配不工作?我發現這與Python關鍵字參數非常不同。
Groovy不會像Python一樣執行關鍵字參數。
首先,語法是類似於地圖的。取而代之的
foo(1,2,d='bar')
你需要
foo(1,2,d:'bar')
其次,常規不能參數關鍵字的名稱映射。在常規做到這一點的方法是接受關鍵字參數作爲地圖:這個是怎麼在這裏常規手柄
def foo(Map kwargs, a, b, c='awesome') { [a,b,c,kwargs.d] }
assert foo(1,2,d:'bar') == [1,2,'awesome','bar']
更多細節:http://groovy.codehaus.org/Extended+Guide+to+Method+Signatures。