我是否正确理解在for-in循环中无法将局部变量作为索引传递,以便在循环结束后修改此变量?
var i = 0
for i in 0..<10 {
}
print(i)
// prints "0" but I expected "10"
答案 0 :(得分:3)
正确。您编写它的方式,i
中的for i
会遮盖for循环范围内的var i
。这是故意的。不过,还有很多其他方法可以做你想做的事情。例如,您可能会写更多类似的内容:
var i = 0
for _ in 0..<10 {
i += 1
// ...
}
或使用其他名称:
var i = 0
for ii in 0..<10 {
i = ii
// ...
}
就个人而言,我更倾向于使用while循环:
var i = 0
while i < 10 {
i += 1
// ...
}
for循环可以总是展开到while循环中,所以这里不失一般性。