我是否正确地理解没有办法在for-in循环中将局部变量作为索引传递,以便在循环结束后修改该变量?
var i = 0
for i in 0..<10 {
}
print(i)
// prints "0" but I expected "10"发布于 2016-05-17 19:38:45
对,是这样。按照您编写它的方式,for i中的for i比var i在for循环作用域中的阴影更大。这是故意的。不过,还有很多其他的方法来做你想做的事情。例如,您可以编写类似于以下内容的内容:
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循环,因此这里不会失去通用性。
https://stackoverflow.com/questions/37284855
复制相似问题