以下代码将产生断言错误
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。