如何向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' )