我很难理解在函数中使用闭包。
在下面的代码中,我创建了一个函数,它获取两个参数并返回一个函数,但自从我看到一些教程,其中显示了一些类似的示例,并将它们称为 “捕获常量和变量”使用闭包的值”,但在我的示例中,我并没有真正看到闭包。
我可以说在下面的代码示例中 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()
正在关闭变量 baseNum
和 increaseBy
, 因为当函数 incrementer()
时两个变量都在范围内已声明。
这个程序员stackexchange post很好地解释了它。如您所见,该示例(虽然是在 javascript 中)看起来与您在此处的代码非常相似。
关于swift - 我是否在以下代码中使用闭包 - Understanding Closures in Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689402/