如何在 Groovy 中混合命名参数和闭包

问题描述 投票:0回答:1

我想编写一个仅采用命名参数和闭包的方法。见下文。

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
?我认为命名参数应该允许它。

groovy closures named-parameters
1个回答
0
投票

您应该将方法定义更改为:

def myMethod(Map args = [:], Closure cl) { ... }

这将确保仅 Closure 变体可用。

© www.soinside.com 2019 - 2024. All rights reserved.