swift的clourse:字面量化的函式、將函式字面量化-與函式的型別簽名相同
1、clourse的簽名與函式的簽名相同;
所以兩者可以相互賦值;
2、可以將函式(表示式)字面量化;
因為可以字面量化,所以和其它的值(變數)沒有任何區別,可以存在變數存在的任何地方;
3、clourse的表達有簡化的形式。
4、尾隨閉包;
//宣告
let 名字 = {(引數) -> 返回值 in closure的內容 }
//呼叫
let 返回值 = 名(引數)
//宣告與呼叫合併使用
let 返回值 = {(引數) -> 返回值 in closure的內容}(實參)
swift的函數語言程式設計通過clourse實現
http://yige.org/swift/closures.php#trailing_closures
型別宣告:
使用直接函式型別定義新型別
public typealias Completion = (_ result: Result<Moya.Response, MoyaError>) -> Void
let networkCompletion: Completion = { result in
if self.trackInflights {
self.inflightRequests[endpoint]?.forEach { $0(result) }
objc_sync_enter(self)
self.inflightRequests.removeValue(forKey: endpoint)
objc_sync_exit(self)
} else {
pluginsWithCompletion(result)
}
}
//例子:直接函式型別定義變數
var clouserGo:((_ str:String)->(String))!
func funcGo(_ str:String)->String{
return str
}
self.clouserGo = funcGo
print(self.clouserGo("goo"))
self.clouserGo = {str in return str}
print(self.clouserGo("eeee"))