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。