我正在研究Swift闭包,但我对闭包捕获列表有一些疑问。
我知道闭包是一种参考类型。我知道引用类型和值类型的含义。
但是在闭包中,当它们捕获值(闭包的局部变量)时,局部变量如何才是引用类型?
例如:
var i = 0
var closureArrays:[()->()] = []
for _ in 1...5{
closureArrays.append{
print(i)
}
i += 1
}
我认为这是封闭中最着名的捕获列表示例。
然后我认为i
是整数类型,它也是值类型但是i
如何成为闭包块中的引用类型?
这与javascript中的范围链是一样的概念吗?
任何人都可以解释清楚吗?