在Swift中捕获值

时间:2016-03-23 06:23:58

标签: swift closures

我不明白捕获值的工作原理。下面是一个嵌套函数的示例,它从周围的函数中捕获 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

1 个答案:

答案 0 :(得分:0)

这就是闭包的工作原理 - 它们在创建时从周围范围捕获变量。