Groovy 中可以把方法或構(gòu)造器的形參設(shè)為可選的兴革。實(shí)際上螟炫,我們想設(shè)置多少就可以設(shè)置多少,但這些形參必須位于形參列表的末尾仅醇。利用這一特性冗美,可以在演進(jìn)式設(shè)計(jì)中向已有的方法添加新的形參。
要定義形參析二,只需要在形參列表中給它賦一個(gè)值粉洼。舉個(gè)栗子:
def log(x, base = 10){
Math.log(x) / Math.log(base)
}
println log(1024)
println log(1024, 10)
println log(1024, 2)
打印結(jié)果:
3.0102999566398116
3.0102999566398116
10.0
- 如輸出打印所示,在缺少實(shí)參是甲抖,Groovy 使用了形參的默認(rèn)值漆改。當(dāng)然了,可選的形參可以不止一個(gè)准谚,舉例如下:
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)
打印結(jié)果:
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
- Groovy 還會(huì)把末尾的數(shù)組形參視作可選的挫剑。這樣的話,可以為最后一個(gè)形參提供零個(gè)或多個(gè)值柱衔,舉個(gè)栗子:
def task(name, String[] details){
println "$name -- $details"
}
task('Call', '123-456-789')
task('Call', '123-456-789', '789-456-123')
task('Check Mail')
打印結(jié)果:
Call -- [123-456-789]
Call -- [123-456-789, 789-456-123]
Check Mail -- []