Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 如何使用闭包的默认值执行命名参数_Groovy - Fatal编程技术网

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

Groovy 如何使用闭包的默认值执行命名参数,groovy,Groovy,所以基本上我想这样做: execute = { String param1, String param2 = 'default' -> echo "${param1}" echo "${param2}" } execute( param1: 'Test1', param2: '123' ) execute('Test2') 但这不起作用,因为它将所有给定参数放在param1中。这将是可能的地图,但我想保留默认参数的

所以基本上我想这样做:

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

另外,我是groovy新手,所以可能已经有人问过我这个问题了——如果是这样的话,我希望有一个指向正确方向的指针:)谢谢你的帮助!不幸的是它不存在,但至少我现在知道了!Groovy没有?@jaco0646是的,Groovy没有命名参数。如果您想了解这在其他语言中是如何工作的,请查看例如Kotlin。文档错误-这是传递地图。