如何向Groovy函数中的最后一个默认参数发送值?

如何向Groovy函数中的最后一个默认参数发送值?,groovy,Groovy,我有这样一个函数: def myFunctionName(one = 'one', two = 'two', three = 'three') { 我无法更改任何参数的顺序或其默认签名(因为有其他服务使用它) 我只想替换第三个值来调用它,但将其他值保留为默认值,类似于myFunctionName(三个:'anotherValue') 我有什么可能性?你不能。Groovy没有像其他语言(如Kotlin)那样的命名参数。您看到的语法类似于myFunc(三个:'val')传递的是Map,是myFun

我有这样一个函数:

def myFunctionName(one = 'one', two = 'two', three = 'three') {
我无法更改任何参数的顺序或其默认签名(因为有其他服务使用它)

我只想替换第三个值来调用它,但将其他值保留为默认值,类似于
myFunctionName(三个:'anotherValue')


我有什么可能性?你不能。Groovy没有像其他语言(如Kotlin)那样的命名参数。您看到的语法类似于
myFunc(三个:'val')
传递的是
Map
,是
myFunc([三个:'val'])
(使用映射文字)的缩写


由于无法更改基本方法,因此最好为
one
two
提取(假设)复杂参数,并编写自己的函数,只需传递
three
。在添加更多的排列之前,考虑将传入的参数更改为某个配置对象。

对于这个特定的情况,可以使用正确的Curry:

def myFunction(one = 'one', two = 'two', three = 'three'){}

def myFunc1and2 = myFunction.rcurry( 'someValue' )

myFunc1and2( '1', '2' )