foreach Commandes Internes Tcl
NOM
foreach - Itère sur tout leséléments d'une ou plusieurs listes
SYNTAXE
foreach varname list body
foreach varlist1 list1 ?varlist2 list2 ...? body
DESCRIPTION
La commande
foreach implémente une boucle ou la ou les variable(s) de boucle tirent leur valeurs d'une ou de plusieurs listes. Dans le cas le plus simple il y a une variable de boucle,
varname, et une liste,
list, qui est une liste de valeurs a assigner à
varname. L'argument
body est un script Tcl. Pour chaque élément de
list (dans l'ordre du premier au dernier),
foreach assigne le contenu de l'élément à
varname comme si la commande
lindex avait été utilisée pour extraire l'élément, ensuite elle appelle l'interpréteur Tcl pour exécuter
body.
Dans le cas general il peut y avoir plus d'une liste de valeurs (ex., list1 et list2), et chaque liste de valeurs peut être associée à une liste de variables de boucle (ex., varlist1 et varlist2). Durant chaque iteration de la boucle, aux variables de chaque varlist sont assignés les valeurs consecutive de la correspondante list. Les valeurs de chaque list sont utilisées dans l'ordre du premier to dernier, et chaque valeur est utilisée une seule fois. Le nombre total d'itérations est suffisant pour utiliser toutes les valeurs à partir de toutes les listes de valeurs. Si une liste de valeurs ne contient pas assez d'éléments pour chacune de ses variables de boucle à chaque iteration, des valeurs vides sont utilisées pour les éléments manquants.
Les instructions
break et
continue peuvent être appelées dans
body, avec le même effet que dans la commande
for.
Foreach retourne une chaîne vide.
EXEMPLES
La boucle suivante utilise i et j comme variables de boucle pour itérer sur des paires d'éléments d'une simple liste.
set x {}
foreach {i j} {a b c d e f} {
lappend x $j $i
}
# La valeur de x est "b a d c f e"
# Il y a 3 iterations de boucle.
La boucle suivante utilise i et j pour itérer sur deux listes en parallèle.
set x {}
foreach i {a b c} j {d e f g} {
lappend x $i $j
}
# La valeur de x est "a d b e c f {} g"
# Il y a 4 iterations de boucle.
Les deux formes sont combinées dans le suivant exemple.
set x {}
foreach i {a b c} {j k} {d e f g} {
lappend x $i $j $k
}
# La valeur de x est "a d e b f g c {} {}"
# Il y a 3 iterations de boucle.