swift - 我是否在以下代码中使用闭包 - Understanding Closures in Swift

标签 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()

最佳答案

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

这个程序员stackexchange post很好地解释了它。如您所见,该示例(虽然是在 javascript 中)看起来与您在此处的代码非常相似。

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

相关文章:

JavaScript - 在自调用函数中传递回调函数

javascript - 我怎么会误解这个例子中的 JavaScript 闭包解析?

ios - 使用自动布局创建具有多个不同自定义单元格的 UITableView 具有几乎相同的 subview

javascript - 在没有全局变量的javascript函数中使用axios

c - 从结构函数返回包含 int 数组的结构

c++ - 如何将对象作为参数传递给类

Javascript 只运行一半的循环

ios - 快捷按钮无法正常工作?

iphone - 文本到语音 [TTS] TTSPlaybackCreate 无法初始化动态 : -3000

ios - 将 Realm 结果映射到 JSON 标准格式