你能告诉 for 循环有条件地前进不止一步吗?

Mar*_*eIV 1 for-loop continue swift swift4

考虑以下代码:

let value = "ABCDE"

for letter in value {
    print(letter)
}
Run Code Online (Sandbox Code Playgroud)

这打印:

A
B
C
D
E
Run Code Online (Sandbox Code Playgroud)

现在考虑假设的代码,当它找到“2”时,它会在循环中向前跳过 2。这是显示我要问的内容的伪代码......

let value = "AB2DE"

for letter in value {

    if letter == "2" {
        continue 2 <-- Does Swift support something similar to this?
    }

    print(letter)
}
Run Code Online (Sandbox Code Playgroud)

上面的输出看起来像这样:

A
B
E
Run Code Online (Sandbox Code Playgroud)

注意:当然,我可以通过管理跳过计数器轻松实现此目的,然后使用continue,在进行时递减计数器,或者,如果源支持下标,正如其他人建议的那样,我可以使用循环while来管理自己的索引。有多种方法可以解决这个假设的问题,但这不是我问题的目的。

我的问题是专门查明该语言是否原生支持一次跳过 for 循环的多次迭代(例如类似continueManyor的东西continue x)。

rma*_*ddy 5

不,您无法更改for-in循环在循环内的迭代方式。

在这种情况下,带有您自己的索引计数器的循环while可能是最简单的解决方案。sequence(first:next:)尽管您可以循环使用for-in