【问题标题】:capturing values in Swift在 Swift 中捕获值
【发布时间】:2016-03-23 06:23:57
【问题描述】:

我不明白捕获值的工作原理。下面是一个嵌套函数的示例,该函数从其周围函数中捕获 amountrunningTotal。当调用 makeIncrementer(forIncrement:) 函数时,incrementer() 函数内部什么也没有发生(incrementer() 函数内部的代码没有被执行),那么 incrementer() 如何捕获任何值呢?我显然是编程新手,我找不到“幕后”实际发生的事情的详细解释。

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

【问题讨论】:

标签: swift closures


【解决方案1】:

这就是闭包的工作原理——当它们被创建时,它们会从周围的作用域中捕获变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2018-08-14
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多