web-dev-qa-db-ja.com

Swiftのforループでインデックスをスキップする方法

Trueの場合はループをスキップするランダムな条件でスキップしようとしていますが、結果はすべての要素を出力しています_0,1,2,3,4_インデックスがインクリメントされている場合はJavaでわかりますインデックスはスキップされますが、これはスウィフトは起こっていません。

更新:これは私が書いたいくつかのプログラムの簡易バージョンであり、print()は各ループの直後に実行する必要があり、インデックスはいくつかの不明な条件でのみインクリメントされます。Javaのように動作させたいです。

_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
  }
}
_
13
miracle-doh

インデックスはループで自動的にインクリメントされます。where句を使用してインデックスをスキップできます。

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

これをお試し下さい:

for var index in 0..<5 {

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

これは機能します。これを行うための最良の方法であるかどうかはわかりません。

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

  print(index)
  if index == 2 {
      skip = true
  }
}
3
miracle-doh

あなたのforループで:

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

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

そんなに簡単ではないですか?

0

0 .. <5のインデックスの場合(条件をここに指定){print(index)}

条件がインデックス3をスキップすることである場合、0のインデックスの場合.. <5 where index!= 3 {print(index)}

0
Sneha
(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}
0
Sri