Swift - 閉包

閉包的本質(zhì)是一個(gè)函數(shù)
閉包 與 OC中的Block相似
來(lái)看這樣一段代碼
var arr:[Int] = []
for _ in 0..<100{
    arr.append(random()%1000)
}

func biggerNumberFirst(a:Int , _ b:Int) -> Bool{
    return a > b
}

arr.sort(biggerNumberFirst)
使用閉包
arr.sort({
    (a:Int ,  b:Int) -> Bool in
    return a > b
})
閉包的化簡(jiǎn)
并不一定非要去使用最簡(jiǎn)單的寫法,有時(shí)候會(huì)失去程序的可讀性,我們要在代碼的簡(jiǎn)潔性和易讀性找到一個(gè)平衡點(diǎn)
1.復(fù)雜的閉包最好還是清楚的寫出變量名 和返回值類型
arr.sort({(a:Int , b:Int) -> Bool in return a > b})
2.簡(jiǎn)單的閉包就使用此種
arr.sort({ a , b in return a > b})
3
arr.sort({ a , b in a > b})
4 如果沒(méi)有給變量命名 swift自動(dòng)命名變量名 $0 $1 $2....類型肯定是Int(因?yàn)閟ort函數(shù)的參數(shù)是Int類型)返回值一定是Bool型
arr.sort({ $0 > $1})
5 >(大于號(hào)) 本身就是一個(gè)函數(shù)
arr.sort(>)
結(jié)尾閉包
如果函數(shù)是作為最后一個(gè)參數(shù),那么就可以使用結(jié)尾閉包
arr.sort(){(a:Int , b:Int) -> Bool in return a > b}
一般這樣寫易讀性較強(qiáng)
arr.sort(){(a:Int , b:Int) -> Bool in
    return a > b
}
最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 閉包是自包含的函數(shù)代碼塊,可以在代碼中被傳遞和使用。Swift 中的閉包與 C 和 Objective-C 中的代...
    窮人家的孩紙閱讀 1,811評(píng)論 1 5
  • 閉包是功能性自包含模塊,可以在代碼中被傳遞和使用。Swift中的閉包與 C 和 Objective-C中的 blo...
    AirZilong閱讀 387評(píng)論 0 2
  • 閉包可以從定義它們的上下文中捕獲和存儲(chǔ)對(duì)任何常量和變量的引用。 這被稱為關(guān)閉這些常量和變量。 Swift處理所有的...
    Joker_King閱讀 638評(píng)論 0 2
  • * 閉包 是自包含的函數(shù)代碼塊,可以在代碼中被傳遞和使用。swift中的閉包和Objective-C中的代碼塊(b...
    EndEvent閱讀 894評(píng)論 4 8
  • Swift 中的閉包是自包含的函數(shù)代碼塊,可以在代碼中被傳遞和使用。類似于OC中的Block以及其他函數(shù)的匿名函數(shù)...
    喬克_叔叔閱讀 556評(píng)論 1 3

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