首页 文章

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

提问于
浏览
1

在函数中使用时,我很难理解闭包 .

在下面的代码中,我创建了一个函数,它获取了两个参数并返回一个函数,但是因为我看到了一些教程,他们展示了一些类似的例子,他们将它们称为 "capturing constants and variables values using 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 回答

  • 1

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

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

相关问题