参数可以有一个默认值。这意味着调用者可以完全省略参数,不为其提供实参;那么,其值就是默认值。
要想提供默认值,在声明中的参数类型后追加一个=号和默认值:
class Dog { func say(s:String, times:Int = 1) { for _ in 1...times { print(s) } }}
事实上,现在有两个函数,分别是say与say(times:)。如果只想说一次,那么你可以直接调用say,同时times:参数值1会提供给你:
let d = Dogd.say("woof") // same as saying d.say("woof", times:1)
如果想要重复,那么就调用say(times:):
let d = Dogd.say("woof", times:3)
如果具有外部名的参数有默认值,那就需要按照顺序调用。比如,如果一个函数的声明如下所示:
func doThing (a a:Int = 0, b:Int = 3) {}
那么,像下面这样调用就是合法的:
doThing(b:5, a:10)
不过,这可能是Swift的一个疏忽,当然,如果有一个参数没有默认值,那么这么调用就是非法的。因此,我建议不要这么做:请保证调用时实参的顺序与声明时形参的顺序一致。