函數參數名稱(Function Parameter Names)
函數參數都有一個外部參數名(external parameter name)和一個局部參數名(local parameter name)。外部 參數名用于在函數調用時標注傳遞給函數的參數,局部參數名在函數的實現內部使用。
指定外部參數名(Specifying External Parameter Names) 你可以在局部參數名前指定外部參數名,中間以空格分隔:
func someFunction(externalParameterName? localParameterName:Int){
}
someFunction(externalParameterName: 3);
忽略外部參數名(Omitting External Parameter Names)
如果你不想為第二個及后續的參數設置外部參數名,用一個下劃線( _ )代替一個明確的參數名。
func? someFounction(firstParameterName:Int,_? secondParameter:Int){
}
someFounction(3, 4);
默認參數值,你可以在函數體中為每個參數定義默認值。當默認值被定義后,調用這個函數時可以忽略這個參數。
func somefunc(parameterWithDefault:Int = 12){
}
somefunc(6);
somefunc();
可變參數(Variadic Parameters)
一個 可變參數(variadic parameter) 可以接受零個或多個值。函數調用時,你可以用可變參數來指定函數參數 可以被傳入不確定數量的輸入值。通過在變量類型名后面加入 (...) 的方式來定義可變參數。
一個函數最多只能有一個可變參數。
如果函數有一個或多個帶默認值的參數,而且還有一個可變參數,那么把可變參數放在參數表的最后。
常量參數和變量參數(Constant and Variable Parameters)
函數參數默認是常量。試圖在函數體中更改參數值將會導致編譯錯誤。這意味著你不能錯誤地更改參數值。
但是,有時候,如果函數中有傳入參數的變量值副本將是很有用的。你可以通過指定一個或多個參數為變量參
數,從而避免自己在函數中定義新的變量。變量參數不是常量,你可以在函數中把它當做新的可修改副本來使用。
對變量參數所進行的修改在函數調用結束后便消失了,并且對于函數體外是不可見的。變量參數僅僅存在于函數
調用的生命周期中。
輸入輸出參數(In-Out Parameters)
變量參數,正如上面所述,僅僅能在函數體內被更改。如果你想要一個函數可以修改參數的值,并且想要在這些 修改在函數調用結束后仍然存在,那么就應該把這個參數定義為輸入輸出參數(In-Out Parameters)。
定義一個輸入輸出參數時,在參數定義前加 inout 關鍵字。一個輸入輸出參數有傳入函數的值,這個值被函數 修改,然后被傳出函數,替換原來的值。
輸入輸出參數和返回值是不一樣的。上面的 swapTwoInts 函數并沒有定義任何返回值,但仍然修改了 someIn t 和 anotherInt 的值。輸入輸出參數是函數對函數體外產生影響的另一種方式。