我想编写一个仅采用命名参数和闭包的方法。见下文。
def myMethod(Map args, Closure cl)
当我调用该方法时,我可以做这样的事情:
myMethod(param1: 'a', param2: 'b') {
// do something in closure
}
// getting a MissingMethodException: No signature of method: myMethod() is applicable for argument types: (TestScript$_run_closure2$) values: ...
myMethod {
// do something in closure
}
如果没有提供参数,为什么我会得到
MissingMethodException
?我认为命名参数应该允许它。
您应该将方法定义更改为:
def myMethod(Map args = [:], Closure cl) { ... }
这将确保仅 Closure 变体可用。