我是否正確理解無法將局部變量作爲for-in循環中的索引傳遞,以便在循環結束後修改此變量?for-in循環中索引的範圍 - swift
var i = 0
for i in 0..<10 {
}
print(i)
// prints "0" but I expected "10"
我是否正確理解無法將局部變量作爲for-in循環中的索引傳遞,以便在循環結束後修改此變量?for-in循環中索引的範圍 - swift
var i = 0
for i in 0..<10 {
}
print(i)
// prints "0" but I expected "10"
正確。按照你寫的方式,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循環,所以這裏不失一般性。
另請參閱http://stackoverflow.com/questions/33219684/cannot-assign-to-value-i-is-a-let-constant-in-swift/33219795#33219795 – Grimxn