原文:http://coolketang.com/staticCoding/5a99261ed50eee2ea303773d.html
1. 本节课将为你演示闭包的使用,闭包功能使编码更加简洁,符合开发语言的现代、简便明了的特点。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/657cb4f31d036ac6b988cb66107655d7.webp?x-image-process=image/format,png)
2. 首先定义一个函数类型的变量,它拥有两个整型参数,并返回一个整型的结果。等号下方的大括号,是用来实用一个函数功能的代码块。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/cda816385063ff0c35aabb3086e3023d.webp?x-image-process=image/format,png)
3. 然后在大括号内,输入两行代码。前一行代码,用来声明函数代码块的参数和返回值信息,然后将对参数的操作,放置在in的下方。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/f68d4937658569f30ffc644a319dcb11.webp?x-image-process=image/format,png)
4. 通过该函数类型的变量,即可调用函数的功能:用来获得两个参数的和。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/9f6b0a126ba2f21a76090f908c09c7af.webp?x-image-process=image/format,png)
5. 这里创建了一个函数,它同样可以实现和上方代码相同的功能。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/761a3297700cf600c5755018d1b41673.webp?x-image-process=image/format,png)
6. 调用的方式也是一样的。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/2bb5e0b160da6c3affbfd3b9f22e583d.webp?x-image-process=image/format,png)
7. 在使用闭包来声明一个函数类型的变量时,可以省略对变量类型的定义,系统会自动推断出它的类型。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/426b34de0becc01130fbc18387257276.webp?x-image-process=image/format,png)
8. 接着使用相同的代码,实现函数的功能即可。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/5a32277d9aedd87a723005bdf1f7fdd6.webp?x-image-process=image/format,png)
9. 其实我们还有更加简单的方式,在等号的右侧,通过一个省略了参数声明的闭包语句,给变量赋予了返回两个参数之和的函数功能。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/a42e291c9b7b170ea77ef3a47c5d00a3.webp?x-image-process=image/format,png)
10. 使用该函数变量,计算两个参数的和。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/98759d3b758fb9b9ea7b148a63f0677f.webp?x-image-process=image/format,png)
11. 这种函数变量的声明方式,仍然可以进行简化,使用$0和$1表示第一个参数和第二个参数,并且省略了return操作符。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/300d812173464b664294dce9c197f9ee.webp?x-image-process=image/format,png)
12. 使用该函数变量,计算两个参数的和。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/8e12243fc833f2ad2dfc42a6f9276e49.webp?x-image-process=image/format,png)
13. 闭包语句随处可见,例如通过系统提供的排序方法sorted,对一个数组进行排序,在此通过小于号,采用升序排列的方式。点击显示结果图标,显示结果列表。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/c56ccc08094936ad01a916c1d1c18b45.webp?x-image-process=image/format,png)
14. 排序方法共进行了4次操作,点击显示结果图标,隐藏结果列表。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/840c2cfaca722853b47772380366ffdf.webp?x-image-process=image/format,png)
15. 继续代码的编写。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/8acb4a28c79e2b6f3ddf3d8b8fa7d349.webp?x-image-process=image/format,png)
16. 输出排序后的数组,从右侧可以看出使用闭包排序后的效果。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/b97a639cf5420c2a8dd4d79d02a40786.webp?x-image-process=image/format,png)
17. 闭包语句经常和方法声明配合使用,但是闭包语句通常放在最后一个参数的位置。在此添加一个方法,该方法拥有一个函数类型的参数,最后返回由该函数参数执行后的结果。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/ca180e03a4f4e03222ec2c76734af2b5.webp?x-image-process=image/format,png)
18. 然后使用闭包语句,使用第三个参数的函数功能。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/7556a4048e53737abfaffee09794987d.webp?x-image-process=image/format,png)
19. 这样就可以将其它的函数,作为该函数的参数进行调用。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/8abf92e17411ab46dd39b9a458a80b67.webp?x-image-process=image/format,png)
20. 同样可以采用更加简便的方式,完成相同的功能。在此只使用一个加号,代替求和闭包。观察右侧输出的结果,和上面的结果是一致的。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/f6eef89cf6ec248b12ed2066b25726a1.webp?x-image-process=image/format,png)
21. 你甚至可以将加号,修改为乘号。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/6cde063a33c6fbf36df4559f3de12473.webp?x-image-process=image/format,png)
22. 无论加号、乘号,还是其它运算符号,其实都是对本行语句中的闭包语句的一种省略的写法。点击显示结果图标,查看本行代码执行的结果,并结束对闭包功能的讨论。
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/955d55ba79dc3247dacc90f89c43dc57.webp?x-image-process=image/format,png)
23.
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/78c1a771df58e1c534bb535545be8414.webp?x-image-process=image/format,png)
![Swift4互动教程](https://i-blog.csdnimg.cn/blog_migrate/9e4a90879e245e20104ccc609f879569.webp?x-image-process=image/format,png)
本文整理自:《Swift4互动教程》,真正的
[手把手]教学模式,用最快的速度上手iOS开发和Swift语言,苹果商店App Store免费下载:
https://itunes.apple.com/cn/app/id1320746678
,或扫描本页底部的二维码。课程配套素材下载地址:
资料下载
![](https://i-blog.csdnimg.cn/blog_migrate/14e41f97b6d4b51f7bc11081e2a0e101.png)