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"))

最新文章

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

热门文章

  1. Memcached 查询stats及各项状态解释
  2. golang的xml、json解析
  3. 多文件上传CommonsMultipartResolver
  4. Java温故而知新(2)多线程详解
  5. Ajax实现页面跳转与结果返回
  6. HDD 机械硬盘 安装 linux(centos7)
  7. 禁用F12和鼠标右键,防止查看控制台代码
  8. Python-并发编程(进程)
  9. WPF 蒙罩层 LoadingPage
  10. (C# 正则表达式)判断匹配, 提取字符串或数值