当在函数中使用闭包时,我很难理解它。
在下面的代码中,我创建了一个函数,该函数获取两个参数并返回一个函数,但是由于我看到了一些教程,其中展示了一些类似的示例,它们称之为“使用闭包捕获常量和变量值”,但是在我的示例中,我并没有看到闭包。
我能说在下面的代码示例中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()
时这两个变量都在范围内。
这个程序员stackexchangepost很好地解释了这一点。正如您在这里看到的,这个示例(尽管是在javascript中)看起来与这里的代码非常相似。
关于swift - 我是否在以下代码中使用闭包-了解Swift中的闭包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34689402/