web-dev-qa-db-fra.com

Commentaire ignorer un index dans une boucle pour Swift

J'essaie de passer dans une condition aléatoire qui, si elle est vraie, sautera une boucle, mais les résultats sont en train d'imprimer tous les éléments 0,1,2,3,4 Je sais en Java si l'index est incrémenté, l'index sera ignoré, mais cela ne se produit pas Swift. ?

Mise à jour: il s'agit d'une version simplifiée d'un programme que j'ai écrit, la print() doit se produire juste après chaque boucle et l'index est UNIQUEMENT incrémenté dans des conditions inconnues. Je souhaite qu'il se comporte comme 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
  }
}
7
miracle-doh

L'index est automatiquement incrémenté dans la boucle, vous pouvez ignorer un index avec une clause where:

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

S'il vous plaît, essayez celui-la: 

for var index in 0..<5 {

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

Cela marche. Je ne sais pas si c'est le meilleur moyen de le faire.

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

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

Dans votre boucle:

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)
  }
}

N'est-ce pas aussi simple ??

1
Sandeep Bhandari

pour index in 0 .. <5 où (indiquez ici votre condition) { print (index) }

Si la condition est de sauter l'index 3, Pour l'index dans 0 .. <5 où index! = 3 { Print (index) }

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

(ou) lorsque la condition est inconnue,

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

Remarque: isNumber2 est une fonction externe qui renvoie le booléen après avoir évalué la condition sur le nombre. Votre implémentation de cette fonction pourrait être différente.

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