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")) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |