我在以下代码中使用闭包 - 了解Swift中的闭包

时间:2016-01-09 03:28:30

标签: swift function closures

在功能中使用时,我很难理解闭包。

在下面的代码中,我创建了一个获取两个参数并返回一个函数的函数,但是因为我看过一些教程,他们展示了一些相似的例子,他们将它们称为 "捕获常量和变量值使用闭包" ,但在我的例子中,我并没有真正看到闭包。

我可以说下面的代码示例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()

1 个答案:

答案 0 :(得分:1)

是。 incrementer()正在关闭变量baseNumincreaseBy,因为当声明函数incrementer()时,这两个变量都在范围内。

这个程序员stackexchange post很好地解释了它。正如你在那里看到的那样,这个例子(虽然在javascript中)看起来与你的代码非常相似。