Swift閉包是引用類型
閉包是引用類型(Closures Are Reference Types)
上麵的例子中,incrementBySeven
和incrementByTen
是常量,但是這些常量指向的閉包仍然可以增加其捕獲的變量值。 這是因為函數和閉包都是引用類型。
無論您將函數/閉包賦值給一個常量還是變量,您實際上都是將常量/變量的值設置為對應函數/閉包的引用。 上麵的例子中,incrementByTen
指向閉包的引用是一個常量,而並非閉包內容本身。
這也意味著如果您將閉包賦值給了兩個不同的常量/變量,兩個值都會指向同一個閉包:
let alsoIncrementByTen = incrementByTen
alsoIncrementByTen()
// 返回的值為50