在Swift中,一個function傳入的參數無法直接改變它的值,先看一個例子:

這段程式碼試圖增加1點參數值"value",而complier此時會產生以下error:

會產生這個error是因為,Swift的function中的參數都是以pass-by-value的方式傳遞,也就是在function外部先copy一份再帶進function中,而function中的參數預設都是以常數為型態,所以無法修改。

那如果在有些需求當中,我們就是想要直接修改參數值呢?這時就要用到inout這個關鍵字:

inoutcopy-in copy-out的意思,也有人理解為call by value result,顧名思義,加上inout後的行為就是copy一份進來,再copy一份出去,所以剛剛的程式碼可以改為:

設定一個數值為5的變數value,帶入incrementAndPrint後印出value的值,可以看到value的值被+1成為6: