web-dev-qa-db-fra.com

Puis-je utiliser "où" dans une boucle for en swift?

Y a-t-il également une possibilité d'utiliser le mot-clé "où" à un autre endroit qu'un commutateur? Puis-je l'utiliser dans une boucle for in par exemple?

J'ai un tableau avec des bools, tous avec une valeur, puis-je faire quelque chose comme ceci:

var boolArray: [Bool] = []

//(...) set values and do stuff


for value where value == true in boolArray {
   doSomething()
}

Ce serait beaucoup plus agréable que d'utiliser un if, donc je me demande s'il y a une possibilité d'utiliser where en combinaison avec une boucle for. Ty pour ton temps.

40
Simon

Dans Swift 2, une nouvelle syntaxe where a été ajoutée:

for value in boolArray where value == true {
   ...
}

Dans la version antérieure à 2.0, une solution serait d'appeler .filter sur le tableau avant de l'itérer:

for value in boolArray.filter({ $0 == true }) {
   doSomething()
}
92
Benjamin Gruenbaum

Un for-loop Normal itérera tous les éléments présents dans la liste. Mais parfois, nous voulons itérer uniquement lorsque les données remplissent une condition, nous pouvons utiliser la clause where avec for -loop. C'est juste un remplacement de la condition if à l'intérieur de la boucle.

Par exemple:

let numbers = [1,2,3,4,5,6,7]
for data in numbers {
    if (data % 2 == 0) {
        print(data)
    }
}

peut être réécrit de la manière la plus simple:

for data in numbers where data % 2 == 0 {
    print(data)
}
4
Sunil Sharma