闭包的本质:
将上层函数的变量,捕获到堆空间中,延长变量的生命周期的函数。
注:如果函数中只存在全局变量,则不能形成闭包。
每一个被捕获的局部变量,都会产生独立的堆空间,闭包共享。
闭包表达式:
![](https://img.haomeiwen.com/i2744938/032a199f3a269b30.png)
尾随闭包:
![](https://img.haomeiwen.com/i2744938/965edfc054684c1e.png)
自动闭包:
- 关键字:
@autoclosure
,作用:自动包装闭包 - 只处理无参数的情况
![](https://img.haomeiwen.com/i2744938/b465c6f4058763fe.png)
![](https://img.haomeiwen.com/i2744938/cf9c418c3d44bf5c.png)
注:空合并运算符特性:
num1 ?? num2 ---> 若num1 为nil,返回num2 反之返回num1。若为可选类型,直接返回的也是可选类型。
特性
闭包中可以使用$0
,$1
表示第一个和第二个参数
闭包中变量要使用self引用
网友评论