Swift - 閉包
閉包的本質是一個函式
閉包 與 OC中的Block相似
來看這樣一段程式碼
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
})
閉包的化簡
並不一定非要去使用最簡單的寫法,有時候會失去程式的可讀性,我們要在程式碼的簡潔性和易讀性找到一個平衡點
1.複雜的閉包最好還是清楚的寫出變數名 和返回值型別
arr.sort({(a:Int , b:Int) -> Bool in return a > b})
2.簡單的閉包就使用此種
arr.sort({ a , b in return a > b})
3
arr.sort({ a , b in a > b})
4 如果沒有給變數命名 swift自動命名變數名 $0 $1 $2....型別肯定是Int(因為sort函式的引數是Int型別)返回值一定是Bool型
arr.sort({ $0 > $1})
5 >(大於號) 本身就是一個函式
arr.sort(>)
結尾閉包
如果函式是作為最後一個引數,那麼就可以使用結尾閉包
arr.sort(){(a:Int , b:Int) -> Bool in return a > b}
一般這樣寫易讀性較強
arr.sort(){(a:Int , b:Int) -> Bool in
return a > b
}
相關文章
- Swift 閉包Swift
- Swift-逃逸閉包、自動閉包Swift
- 深入理解swift的閉包Swift
- Swift開發基礎06-閉包Swift
- Swift 中如何利用閉包實現非同步回撥?Swift非同步
- iOS學習筆記42 Swift(二)函式和閉包iOS筆記Swift函式
- 閉包
- 閉包 | 淺談JavaScript閉包問題JavaScript
- 如何在 Swift 中優雅的處理閉包導致的迴圈引用Swift
- 【集合論】關係閉包 ( 關係閉包求法 | 關係圖求閉包 | 關係矩陣求閉包 | 閉包運算與關係性質 | 閉包複合運算 )矩陣
- 閉包是什麼?怎麼形成一個閉包?為什麼使用閉包?
- golang 閉包Golang
- 「閉包」攻略
- PHP 閉包PHP
- JavaScript閉包JavaScript
- JavaScript - 閉包JavaScript
- Golang閉包Golang
- JavaScript 閉包JavaScript
- 理解“閉包”
- swift tabview 帶引數請求網路。多條目展示。json解析,逃逸閉包SwiftViewJSON
- 什麼是閉包,閉包的優缺點?
- 什麼是閉包?閉包的作用是什麼?
- js閉包及閉包的經典使用場景JS
- [JavaScript閉包]Javascript閉包的判別,作用和示例JavaScript
- C#閉包C#
- 筆記:閉包筆記
- 亂談閉包
- 閉包的起源
- 函式閉包函式
- JavaScript-閉包JavaScript
- JS閉包ClosureJS
- JavaScript 的閉包JavaScript
- 理解JavaScript 閉包JavaScript
- JavaScript之閉包JavaScript
- Groovy閉包理解
- 閉包作用域
- 再讀閉包
- 閉包問題
- go 閉包函式Go函式