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"))
swift的clourse:字面量化的函數、將函數字面量化-與函數的類型簽名相同