2.5 可选形参

  1. Groovy 中可以把方法或构造器的形参设为可选的。实际上,我们想设置多少就可以设置多少,但这些形参必须位于形参列表的末尾。利用这一特性,可以在演进式设计中向已有的方法添加新的形参。

  2. 要定义形参,只需要在形参列表中给它赋一个值。举个栗子:

def log(x, base = 10){
    Math.log(x) / Math.log(base)
}

println log(1024)
println log(1024, 10)
println log(1024, 2)

打印结果:

3.0102999566398116
3.0102999566398116
10.0
  1. 如输出打印所示,在缺少实参是,Groovy 使用了形参的默认值。当然了,可选的形参可以不止一个,举例如下:
def printValue(a, b = 1, c = 2, d = 3, e = 4, f = 5) {
    println "a = " + a + ", b = " + b + ", c = " + c + ", d = " + d + ", e = " + e + ", f = " + f
}

printValue(10)
printValue(10, 11, 12, 13)
printValue(10, 11, 12, 13)
printValue(10, 11, 12, 13, 14, 15)

打印结果:

a = 10, b = 1, c = 2, d = 3, e = 4, f = 5
a = 10, b = 11, c = 12, d = 13, e = 4, f = 5
a = 10, b = 11, c = 12, d = 13, e = 4, f = 5
a = 10, b = 11, c = 12, d = 13, e = 14, f = 15
  1. Groovy 还会把末尾的数组形参视作可选的。这样的话,可以为最后一个形参提供零个或多个值,举个栗子:
def task(name, String[] details){
    println "$name -- $details"
}

task('Call', '123-456-789')
task('Call', '123-456-789', '789-456-123')
task('Check Mail')

打印结果:

Call -- [123-456-789]
Call -- [123-456-789, 789-456-123]
Check Mail -- []

你可能感兴趣的:(2.5 可选形参)