Syntaxe
Parcourt une liste ou une map de son premier élément à son dernier. Dans la boucle, l'élément du tour est l'élément courant.
FOREACH <collection>()
<statements>
NEXT [<collection>()]Les éléments
| <collection> | Une liste déclarée par NewList, une map déclarée par NewMap, ou un champ liste ou map d'un enregistrement (bag.items). Les parenthèses sont obligatoires. |
|---|---|
| <statements> | Le corps. <collection>() lit ou modifie l'élément du tour ; MapKey() donne la clé d'une entrée de map. |
À savoir
- Une map se parcourt dans l'ordre de création de ses entrées.
- Supprimer l'élément courant dans la boucle est sans danger : la boucle continue avec le suivant.
EXITetCONTINUEmarchent comme dans toute boucle. FOREACH aetNEXT asans parenthèses sont des erreurs de compilation ;NEXTseul convient. UnNEXTqui nomme une autre collection est refusé. Il n'existe pas deENDFOREACH.- FOREACH ne marche pas sur les tableaux : utilisez
FOR i = 0 TO a.length. - FOREACH déplace l'unique curseur de la collection. Un FOREACH imbriqué sur la même liste, ou un appel qui déplace le curseur, change la position de la boucle extérieure. Après un tour complet il n'y a plus d'élément courant : ListIndex() renvoie -1.
Exemple
NewList a.i()FOR k = 1 TO 5 AddElement(a()) a() = kNEXTFOREACH a() IF Mod(a(), 2) = 0 THEN DeleteElement(a())NEXTFOREACH a() Console(Str(a())) ' 1, then 3, then 5NEXT a()NewMap stock.i()stock("apple") = 3stock("pear") = 5FOREACH stock() Console(MapKey(stock()) + " = " + Str(stock())) ' apple = 3, then pear = 5NEXTDans le manuel : Tableaux, listes et maps