for-in循环中的索引范围 - swift

时间:2016-05-17 19:35:37

标签: swift

我是否正确理解在for-in循环中无法将局部变量作为索引传递,以便在循环结束后修改此变量?

var i = 0
for i in 0..<10 {
}
print(i)

// prints "0" but I expected "10"

1 个答案:

答案 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循环中,所以这里不失一般性。