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

Gav*_*los 8 parameters groovy function default-value

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

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

def "testMethod"() {
    given:
    testMethod("arg1", "arg3")
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

inj*_*eer 13

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

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

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

考虑您的示例的扩展:

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
Run Code Online (Sandbox Code Playgroud)

它打印:

1
arg2
3
-----------
1
2
arg3
Run Code Online (Sandbox Code Playgroud)

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