Constant and Variable Parameters
Function裡的參數預設都是常數,因此若是在function裡想要改變傳入的參數時會出現compile error。不過有時候我們還是會有需要修改的時候。我們可以在裡面新增一個變數並將參數傳入以便於修改,但若今天有很多參數時這個方法就不是那麼好用。Swift提供了設定變數參數的方式讓程式碼更精簡。方法就是在定義參數時前面加入var:
func sayHi(var name: String) -> String{
name = "Hello " + name
return name
}
let myName = "Eason"
let greetingName = sayHi(myName)
// myName 並不會因為sayHi的呼叫而改變值
In-Out Parameters
上面提到的變數參數,改變的只有function內部,不會影響原來的值。若我們想要直接改變原來的值,就要宣告in-out parameter。 宣告方式也是在參數前面加一個keyword,inout:
func sayHi(inout name: String) -> String{
name = "Hello " + name
return name
}
var myName = "Eason"
let greetingName = sayHi(&myName)
呼叫的時候跟variable parameter不同的是,參數前面要加&。
當執行完sayHi之後,myName也跟著改變了。
(呼叫時我們代入的一定要是變數,不然會有問題)。
要注意的是,in-out parameter不能設定初始值,且variadic parameter不能設為inout parameter。另外,當我們將參數設定為inout時,就不能再加var或是let了。