2
def m(arg, ...args) {
println "arg: $arg"
println "args: $args"
}
m('arg', k:'v')
輸出:
arg:['k':'v']
args:['arg']
我認爲正確的輸出應該是
args:['arg']
arg:['k':'v']
def m(arg, ...args) {
println "arg: $arg"
println "args: $args"
}
m('arg', k:'v')
輸出:
arg:['k':'v']
args:['arg']
我認爲正確的輸出應該是
args:['arg']
arg:['k':'v']
Groovy中有地圖參數的特殊的排序規則,如果他們採取在參數的第一個位置列出
def fn(Map params, ...args) {
println "params = $params and args = $args"
}
然後,調用該方法具有:
fn(1, 2, 3, something:'else')
會打印:
params = [something:else] and args = [1, 2, 3]
Groovy還具有封閉參數特殊排序規則,因爲如果他們是最後一個參數:
def fn2(a, b, Closure cl) {
cl(a, b)
}
然後你可以把它們放到父外調用方法時heses,即:
println fn2(1, 2) { a, b -> a + b } // prints 3
因爲你已經在所有參數省略類型,它只是粘在地圖作爲第一個參數