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