2016-05-17 60 views
0

我是否正確理解無法將局部變量作爲for-in循環中的索引傳遞,以便在循環結束後修改此變量?for-in循環中索引的範圍 - swift

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

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

另請參閱http://stackoverflow.com/questions/33219684/cannot-assign-to-value-i-is-a-let-constant-in-swift/33219795#33219795 – Grimxn

回答

2

正確。按照你寫的方式,ifor 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循環,所以這裏不失一般性。

+0

yu沒有用'++' ? –

+2

現代Swift中沒有'++',@CharlieMartin。 – matt

+1

從swift 3開始,不會有++,@ CharlieMartin。 –