Groovy 中的默认值参数作为中间参数

Default value parameter in Groovy as middle argument

我有一个简单的问题。为什么我可以在下面的情况下省略中间参数?

    def testMethod(arg1, arg2 = "arg2", arg3) {
    println arg1
    println arg2
    println arg3
}

def "testMethod"() {
    given:
    testMethod("arg1", "arg3")
}

输出:

在 groovy 中,您可以为方法的参数分配默认值,使这些参数可选。

通常可选参数是尾部参数,这从调用此类方法的 POV 来看是有意义的。

您也可以像您所做的那样为中间参数声明默认值。在这种情况下,您应该知道哪些参数将获得默认值,哪些不会。

考虑你的例子的扩展:

def testMethod(arg1, arg2 = "arg2", arg3) {
    println arg1
    println arg2
    println arg3
}
testMethod 1, 3

println '-----------'

def testMethod1(arg1, arg2 = "arg2", arg3 = 'arg3') {
    println arg1
    println arg2
    println arg3
}
testMethod1 1,2

它打印:

1
arg2
3
-----------
1
2
arg3

因此,当使用两个参数调用这两个方法时,testMethod 将第二个参数替换为默认值,而 testMethod1 默认为第三个参数。

我的问题也找到了很好的答案:

Groovy documentation - default arguments with example