一、闭包
二、闭包作为函数参数
1、尾随闭包
定义:
- 当函数的最后一个参数是函数时,在函数调用时可以把闭包表达式写在()外面
- 尾随闭包是一个书写在函数括号之后的闭包表达式
-
2、逃逸闭包
定义:
如果一个闭包被作为一个函数的参数,并且在函数执行完之后才被执行,那么这种情况下的闭包就被称为逃逸闭包
- 在参数名的:后面用@escaping来修饰说明逃逸闭包
3、自动闭包
定义:
- 在参数名的:后面用@autoclosure来修饰说明自动闭包
- @autoclosure会自动将20封装成闭包{20}
- @autoclosure只支持() -> T格式的参数
- @autoclosure并非只支持最后1个参数
- 有@autoclosure和无@autoclosure构成了函数重载
- 空合并运算符??使用了@autoclosure技术 ```objectivec func getFirstPositive( a: Int, b: @autoclosure () -> Int) -> Int { return a > 0 ? a : b() }
getFirstPositive(1, 10) ```