我不明白捕获值的工作原理。下面是一个嵌套函数的示例,它从周围的函数中捕获 amount 和 runningTotal 。当调用makeIncrementer(forIncrement :)函数时,在incrementmenter()函数内部没有任何反应(incrementmenter()函数内的代码没有被执行),那么incrementmenter()如何捕获任何值?我显然是编程方面的新手,我无法找到“引擎盖下”实际发生情况的详细解释。
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementer() -> Int {
runningTotal += amount
return runningTotal
}
return incremented
}
let incrementByTen = makeIncrementer(forIncrement: 10)
incrementByTen()
// returns a value of 10
incrementByTen()
// returns a value of 20
incrementByTen()
// returns a value of 30
答案 0 :(得分:0)
这就是闭包的工作原理 - 它们在创建时从周围范围捕获变量。