假设我有一个这样的for-in循环:
for index in 1...5 {
}
假设我发现在索引2处,由于某种情况,我想跳到索引4。以下内容不起作用:
for index in 1...5 {
if index == 2 {
index = 4
}
}
因为它给了我以下错误:
无法分配值:“ index”是“ let”常量
如何修改索引的位置以跳到索引4?
答案 0 :(得分:2)
在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
的方式。