閉包可以捕獲和存儲(chǔ)其所在上下文中任意常量和變量的引用抛计。被稱(chēng)為包裹常量和變量缰冤。 Swift 會(huì)為你管理在捕獲過(guò)程中涉及到的所有內(nèi)存操作柒瓣。
閉包可以在定義的上下文中捕獲常量或者變量。即使定義這些常量或者變量的作用域已經(jīng)不存在悲柱,閉包仍然可以在閉包函數(shù)體內(nèi)引用和修改這些值。
swift中些己,可以捕獲值的閉包的最簡(jiǎn)單形式是嵌套函數(shù)豌鸡。也就是定義在其他函數(shù)體內(nèi)部的函數(shù)嵌套函數(shù)可以捕獲其外部函數(shù)所有的參數(shù)以及定義的變量或者常量。
上邊incermenter會(huì)捕獲amount參數(shù)和runningTotal變量?jī)蓚€(gè)數(shù)段标。每次調(diào)用incermenter涯冠,結(jié)果都會(huì)在runningTotal的基礎(chǔ)上增加amount的值。