1. 本节课将为你演示闭包的使用,闭包功能使编码更加简洁,符合开发语言的现代、简便明了的特点。

2. 首先定义一个函数类型的变量,它拥有两个整型参数,并返回一个整型的结果。等号下方的大括号,是用来实用一个函数功能的代码块。

3. 然后在大括号内,输入两行代码。前一行代码,用来声明函数代码块的参数和返回值信息,然后将对参数的操作,放置在in的下方。

4. 通过该函数类型的变量,即可调用函数的功能:用来获得两个参数的和。

5. 这里创建了一个函数,它同样可以实现和上方代码相同的功能。


7. 在使用闭包来声明一个函数类型的变量时,可以省略对变量类型的定义,系统会自动推断出它的类型。


9. 其实我们还有更加简单的方式,在等号的右侧,通过一个省略了参数声明的闭包语句,给变量赋予了返回两个参数之和的函数功能。


11. 这种函数变量的声明方式,仍然可以进行简化,使用$0和$1表示第一个参数和第二个参数,并且省略了return操作符。


13. 闭包语句随处可见,例如通过系统提供的排序方法sorted,对一个数组进行排序,在此通过小于号,采用升序排列的方式。点击显示结果图标,显示结果列表。

14. 排序方法共进行了4次操作,点击显示结果图标,隐藏结果列表。


16. 输出排序后的数组,从右侧可以看出使用闭包排序后的效果。

17. 闭包语句经常和方法声明配合使用,但是闭包语句通常放在最后一个参数的位置。在此添加一个方法,该方法拥有一个函数类型的参数,最后返回由该函数参数执行后的结果。



20. 同样可以采用更加简便的方式,完成相同的功能。在此只使用一个加号,代替求和闭包。观察右侧输出的结果,和上面的结果是一致的。


22. 无论加号、乘号,还是其它运算符号,其实都是对本行语句中的闭包语句的一种省略的写法。点击显示结果图标,查看本行代码执行的结果,并结束对闭包功能的讨论。



本文整理自:《Swift4互动教程》,真正的[手把手]教学模式,用最快的速度上手iOS开发和Swift语言,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1320746678,或扫描本页底部的二维码。课程配套素材下载地址:资料下载
网友评论