Swift 閉包 傳值

語(yǔ)法

以下定義了一個(gè)接收參數(shù)并返回指定類型的閉包語(yǔ)法:

{ (parameters) -> return type in

? statements

}

尾隨閉包

尾隨閉包是一個(gè)書(shū)寫(xiě)在函數(shù)括號(hào)之后的閉包表達(dá)式,函數(shù)支持將其作為最后一個(gè)參數(shù)調(diào)用

func someFunctionThatTakesAClosure(closure: () -> Void) {

?// 函數(shù)體部分

}

// 以下是不使用尾隨閉包進(jìn)行函數(shù)調(diào)用

someFunctionThatTakesAClosure( { // 閉包主體部分} )

// 以下是使用尾隨閉包進(jìn)行函數(shù)調(diào)用

someFunctionThatTakesAClosure() { // 閉包主體部分}

捕獲值

閉包可以在其定義的上下文中捕獲常量或變量。

即使定義這些常量和變量的原域已經(jīng)不存在,閉包仍然可以在閉包函數(shù)體內(nèi)引用和修改這些值。

Swift最簡(jiǎn)單的閉包形式是嵌套函數(shù),也就是定義在其他函數(shù)的函數(shù)體內(nèi)的函數(shù)。

嵌套函數(shù)可以捕獲其外部函數(shù)所有的參數(shù)以及定義的常量和變量。

看這個(gè)例子:

func makeIncrementor(forIncrement amount: Int) -> () -> Int {??

? var runningTotal = 0? ?

?func incrementor() -> Int {? ? ?

? ? ? ? runningTotal += amount

? ? ? ? return runningTotal

? ? }? ?

?return incrementor

}

//定義閉包類型(特定的函數(shù)類型函數(shù)類型)

typealias InputClosureType = (String) -> Void

//接收上個(gè)頁(yè)面?zhèn)鬟^(guò)來(lái)的閉包塊

?var backClosure: InputClosureType?

//使用

self.backClosure!(tempString)

//回調(diào)

secondVC.backClosure = {

? ? ? ?(backStr: String) -> Void? ? in? ? ?

?? ? ? self.showTextLabel.text = backStr

?}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫(xiě)文章,發(fā)現(xiàn)簡(jiǎn)書(shū)還為我保存起的...
    Jenaral閱讀 3,144評(píng)論 2 9
  • 86.復(fù)合 Cases 共享相同代碼塊的多個(gè)switch 分支 分支可以合并, 寫(xiě)在分支后用逗號(hào)分開(kāi)。如果任何模式...
    無(wú)灃閱讀 1,557評(píng)論 1 5
  • 閉包 閉包是自包含的功能塊,可以在代碼中傳遞和使用。Swift中的閉包與C和Objective-C中的塊以及其他編...
    Fuuqiu閱讀 447評(píng)論 0 0
  • 研究了一天閉包,然后發(fā)現(xiàn)尾隨閉包,捕獲值 這些東西!還有方法里面帶閉包,在網(wǎng)上找了些代碼,都不是看的特別明白,感覺(jué)...
    HotRay閱讀 729評(píng)論 0 2
  • 類與結(jié)構(gòu) swift的結(jié)構(gòu)體增添了很多類的功能: 定義函數(shù),定義下標(biāo),有構(gòu)造函數(shù),可以擴(kuò)展,還可以遵循協(xié)議來(lái)提供某...
    merlinCry閱讀 363評(píng)論 0 0

友情鏈接更多精彩內(nèi)容