次のコードはアサーションエラーを生成します
def foo(a,b,c='awesome',d=null) {
assert d
}
foo(1,2,d='bar')
なぜエラーが発生するのですか?dのキーワード割り当てが機能しないのはなぜですか?これはPythonのキーワード引数とは大きく異なります。
次のコードはアサーションエラーを生成します
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')
第二に、groovyは引数を名前でキーワードにマップすることはできません。groovyでこれを実現する方法は、キーワード引数をマップとして受け入れることです。
def foo(Map kwargs, a, b, c='awesome') { [a,b,c,kwargs.d] }
assert foo(1,2,d:'bar') == [1,2,'awesome','bar']
groovyがこれを処理する方法の詳細については、http://groovy.codehaus.org/Extended+Guide+to+Method+Signaturesを参照してください。