闭包表达式
0.闭包表达式.png
大括号+参数+返回值类型+in+函数体代码
尾随闭包
0.尾随闭包.png
let result = exec(v1: 1, v2: 2) { (a, b) -> Int in
return a * b
}
let result = exec(v1: 1, v2: 2) {
return $0 * $1
}
let result = exec(v1: 1, v2: 2) {
$0 * $1
}
上面的三种写法是等效的。
函数的最后一个参数,且这个参数是一个闭包表达式
闭包
0.闭包.png
函数+捕获的变量/常量环境
闭包不同于闭包表达式
把闭包想象成一个类
自动闭包
0.自动闭包.jpg
有时可以延迟执行某些代码,甚至不执行。