闭包可以从定义它们的上下文中捕获和存储引用到任何常量和变量。这被称为关闭那些常量和变量。
我不完全了解商店参考部分。这是否意味着它创造了某种"指针"变量?如果值改变了"去参考指针"也改为新的价值。我认为Swift没有指针概念。我借用它来表达我的理解。
非常好,有人可以提供一个简单的代码行来解释闭包如何存储引用到常量/变量。
答案 0 :(得分:3)
这是否意味着它为变量创建某种“指针”?如果 值改变了“去引用指针”也改为新的 值。
是
我认为Swift没有指针概念。
它肯定是以(隐式)形式的引用类型(类)和UnsafePointer
这是一个在闭包中捕获的变量的示例。这一切都恰好是单线程的,但你可以通过大中央调度来调度这个闭包。捕获x
以便它在闭包的整个生命周期中都存在,即使在x
声明范围(f()
)退出后存在闭包。
func f() {
var x = 0 //captured variable
_ = {
x = 5 //captures x from parent scope, and modifies it
}()
print(x) //prints 5, as x was modified by the closure
}
f()
我写了another answer来解释函数,闭包和其他术语之间的关系。值得一读,IMO。