跳入循环索引

时间:2019-06-27 22:30:31

标签: swift swift4

假设我有一个这样的for-in循环:

for index in 1...5 {

}

假设我发现在索引2处,由于某种情况,我想跳到索引4。以下内容不起作用:

for index in 1...5 {
    if index == 2 {
        index = 4
    }
}

因为它给了我以下错误:

  

无法分配值:“ index”是“ let”常量

如何修改索引的位置以跳到索引4?

1 个答案:

答案 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的方式。