如何在Swift中跳过for循环中的索引

时间:2017-01-09 08:59:07

标签: ios swift for-loop iteration

我尝试跳过随机条件,如果为true,则会跳过循环,但结果会打印所有元素0,1,2,3,4 我知道在Java中索引是否会增加索引会跳过,但这不会发生Swift。?

更新:这是我编写的某个程序的简化版本,print()必须在每个循环后立即发生,并且索引仅在某些未知条件下递增,我希望它的行为类似于JAVA。 / p>

for var index in 0..<5 {
  print(index)//this prints 0,1,2,3,4, this must happen right after for loop
  if some unknown condition {
      index+=1
  }
}

7 个答案:

答案 0 :(得分:23)

索引在循环中自动递增,您可以跳过带有where子句的索引:

for index in 0..<5 where index != 2 {
    print(index)
}

答案 1 :(得分:19)

请尝试这个:

for var index in 0..<5 {

  if index == 2 {
     continue
  }
  print(index)//this prints 0,1,3,4
}

答案 2 :(得分:4)

这很有效。不确定这是否是最好的方法。

var skip = false
for var index in 0..<5 {
  if (skip) {
    skip = false
    continue
  }

  print(index)
  if index == 2 {
      skip = true
  }
}

答案 3 :(得分:2)

在你的for循环中:

for var index in 0..<5 {
if index != 2{
   print(index)
}
}

答案 4 :(得分:1)

for var index in 0..<5 {

  if index == 2 {
      //dont do anything
  }
  else {
     print(index)
  }
}

难道不是那么简单吗?

答案 5 :(得分:0)

(0..<5).filter({$0 != 2}).forEach{ x in print(x)}

(或)当条件未知时,

(0..<5).filter(isNumber2).forEach{ x in print (x)}

注意: isNumber2是一个外部函数,在评估数字上的条件后返回布尔值。您对此功能的实现可能会有所不同。

var isNumber2: (Int) -> (Bool) = { return $0 != 2}

答案 6 :(得分:0)

表示0中的索引。&lt; 5在哪里(在这里给出你的条件){     打印(索引) }

如果条件是跳过索引3, 索引在0 ..&lt; 5其中index!= 3 {     打印(索引) }