2016-05-17 5 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

Исправить. То, как вы его написали, i в for i затмевает var i внутри области цикла. Это преднамеренно. Однако есть много других способов сделать то, что вы хотите сделать. Например, вы могли бы написать что-то больше, как это:

var i = 0 
for _ in 0..<10 { 
    i += 1 
    // ... 
} 

Или использовать другое имя:

var i = 0 
for ii in 0..<10 { 
    i = ii 
    // ... 
} 

Лично я был бы более склонен здесь использовать время цикла:

var i = 0 
while i < 10 { 
    i += 1 
    // ... 
} 

A for loop can всегда разворачивается в цикл while, поэтому здесь нет никакой общности.

+0

yu no use '++' ? –

+2

В современном Swift, @CharlieMartin нет '++'. – matt

+1

Начиная с swift 3 не будет ++, @ CharlieMartin. –

Смежные вопросы