Скажем, у меня есть такой цикл for-in:
for index in 1...5 {
}
Допустим, я обнаружил, что в индексе 2 я хочу перейти к индексу 4 из-за некоторого условия. Следующее не работает:
for index in 1...5 {
if index == 2 {
index = 4
}
}
Потому что это дает мне следующую ошибку:
Невозможно присвоить значение: 'index' - это константа 'let'
Как я могу изменить положение индекса, чтобы перейти к индексу 4?
В цикле for вы не можете перемещаться по индексу в реальном времени - то есть, если после запуска цикла вы обнаружите, что вам нужно пропустить итерацию, вы не сможете. Но вы можете избежать итерации с continue
. Так например:
var skip = 0
for i in 1...5 {
if i < skip { continue }
print(i)
if i == 2 { skip = 4}
}
Однако в такой ситуации вам может понравиться цикл while.
var i = 1
while i <= 5 {
print(i)
i += 1
if i == 3 { i = 4 }
}
Другая возможность - развернуть исходный цикл for в цикл while:
var r = (1...5).makeIterator()
while let i = r.next() {
print(i)
if i == 2 { r.next() }
}
Все это способы печати 1,2,4,5
.
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения