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"))
最新文章
- postgres 正则表达式 转
- 24个 HTML5 &; CSS3 下拉菜单效果及制作教程
- [ASP.NET] Http协议GET与POST
- 四步完成ajax的使用
- 【译】 AWK教程指南 5AWK中的数组
- CSAPP Lab2: Binary Bomb
- JavaScript系统学习小结——变量、作用域和内存问题
- Docker日志收集最佳实践
- SparkSQL – 从0到1认识Catalyst(转载)
- [转] 详解webpack-dev-server的使用
- CNN Mnist
- hdu 2034 改革春风吹满地 多边形面积
- Java 正则校验整数,且只能是非0开头
- PAT 乙级 1064 朋友数(20) C++版
- DialogFragment 对话框 碎片
- 实验 六:分析linux内核创建一个新进程的过程
- cesium and three.js【转】
- Android xUtils3源代码解析之网络模块
- 【Qt】仿QQ表情选择控件
- LLE局部线性嵌入算法