一般參數僅僅是在函數內可以改變的,當這個函數執行完後變量就會被銷燬,不會有機會改變函數以外的變量,那麼我們就會產生一個疑問,我們可不可以通過一個函數改變函數外面變量的值呢?答案是肯定的,這時我們就需要用到inout關鍵字了
聲明函數時,在參數前面用inout修飾,在函數內部實現改變外部參數,注意,這裏只能傳入變量,不能傳入常量和字面量,因爲這些是不能變的一旦定義,當我們傳入的時候,在變量名字前面用&符號修飾表示,傳遞給inout參數,表明這個變量在參數內部是可以被改變的
注意:inout修飾的參數是不能有默認值的,有範圍的參數集合也不能被修飾,另外,一個參數一旦被inout修飾,就不能再被var和let修飾了
override func viewDidLoad() {
super.viewDidLoad()
var someInt = 7
var anotherInt = 107
swapTwoInts(&someInt, b: &anotherInt)
print("someInt is \(someInt),anotherInt is \(anotherInt)")
}
func swapTwoInts(inout a:Int , inout b:Int) {
let temp = a
a = b
b = temp
}