2015-09-29 24 views

回答

5

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 

因爲你已經在所有參數省略類型,它只是粘在地圖作爲第一個參數