本頁(yè)包含內(nèi)容:
閉包是自包含的函數(shù)代碼塊,可以在代碼中被傳遞和使用。 Swift 中的閉包與 C 和 Objective-C 中的代碼塊(blocks)以及其他一些編程語(yǔ)言中的 lambdas 函數(shù)比較相似。
閉包可以捕獲和存儲(chǔ)其所在上下文中任意常量和變量的引用。 這就是所謂的閉合并包裹著這些常量和變量,俗稱閉包。Swift 會(huì)為您管理在捕獲過(guò)程中涉及到的所有內(nèi)存操作。
注意:
如果您不熟悉捕獲(capturing)這個(gè)概念也不用擔(dān)心,您可以在 值捕獲 章節(jié)對(duì)其進(jìn)行詳細(xì)了解。
在函數(shù) 章節(jié)中介紹的全局和嵌套函數(shù)實(shí)際上也是特殊的閉包,閉包采取如下三種形式之一:
Swift 的閉包表達(dá)式擁有簡(jiǎn)潔的風(fēng)格,并鼓勵(lì)在常見(jiàn)場(chǎng)景中進(jìn)行語(yǔ)法優(yōu)化,主要優(yōu)化如下:
return關(guān)鍵字