当在函数中使用闭包时,我很难理解它。
在下面的代码中,我创建了一个函数,该函数获取两个参数并返回一个函数,但是由于我看到了一些教程,其中展示了一些类似的示例,它们称之为“使用闭包捕获常量和变量值”,但是在我的示例中,我并没有看到闭包。
我能说在下面的代码示例中incrementer()是闭包吗?

func incrementNumber(baseNumber:Int, increaseBy: Int) -> () -> Int {

    var baseNum = baseNumber

    func incrementer() -> Int {
        baseNum += increaseBy
        return baseNum
    }

    return incrementer
}

let increase = incrementNumber(100, increaseBy: 20)
increase()
increase()
increase()

最佳答案

对。incrementer()正在关闭变量baseNumincreaseBy,因为声明函数incrementer()时这两个变量都在范围内。
这个程序员stackexchangepost很好地解释了这一点。正如您在这里看到的,这个示例(尽管是在javascript中)看起来与这里的代码非常相似。

关于swift - 我是否在以下代码中使用闭包-了解Swift中的闭包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34689402/

10-13 09:21