閉包的本質(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
}
最后編輯于 :2017.12.03 05:28:36
?著作權(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ù)。