參數可以有一個默認值。這意味著調用者可以完全省略參數,不為其提供實參;那麼,其值就是默認值。
要想提供默認值,在聲明中的參數類型後追加一個=號和默認值:
class Dog { func say(s:String, times:Int = 1) { for _ in 1...times { print(s) } } }
事實上,現在有兩個函數,分別是say與say(times:)。如果只想說一次,那麼你可以直接調用say,同時times:參數值1會提供給你:
let d = Dog d.say("woof") // same as saying d.say("woof", times:1)
如果想要重複,那麼就調用say(times:):
let d = Dog d.say("woof", times:3)
如果具有外部名的參數有默認值,那就需要按照順序調用。比如,如果一個函數的聲明如下所示:
func doThing (a a:Int = 0, b:Int = 3) {}
那麼,像下面這樣調用就是合法的:
doThing(b:5, a:10)
不過,這可能是Swift的一個疏忽,當然,如果有一個參數沒有默認值,那麼這麼調用就是非法的。因此,我建議不要這麼做:請保證調用時實參的順序與聲明時形參的順序一致。