如何使用闭包的默认值执行命名参数



所以基本上我想做这样的事情:

execute = { String param1, String param2 = 'default' ->
echo "${param1}"
echo "${param2}"
}
execute(
param1: 'Test1',
param2: '123'
)
execute('Test2')

但这不起作用,因为它将所有给定的参数都放在param1中。使用映射是可能的,但我希望保留默认参数的功能。

有办法做到这一点吗?

Groovy没有命名参数。你只能允许一张地图看起来会的。所以你必须考虑到地图并处理你自己倒回去。例如,将传入的映射与某个默认映射合并或者在需要的地方选择默认值。例如
def c = { Map args=[:] ->
def param1 = args.param1 ?: 'fallback'
println param1
}
c()
// ⇒ fallback
c(param1: "set")
// ⇒ set

最新更新