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
默认为第三个参数。
我的问题也找到了很好的答案:
我有一个简单的问题。为什么我可以在下面的情况下省略中间参数?
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
默认为第三个参数。
我的问题也找到了很好的答案: