Section 4.3

Boucle for in

Une suite de valeurs, et la boucle qui les prend une à une, sans indice ni compteur.

Compter jusqu’à un nombre est une chose ; parcourir des valeurs en est une autre. Pour la seconde, il faut d’abord un endroit où les ranger.

@entry(demarrer)
object MonProgramme {
    demarrer() {
        var temperatures := [12, 19, 7];

        for mesure in temperatures {
            Console.print(text: $"mesure : {mesure}");
        }
    }
}

Plusieurs valeurs sous un seul nom

var temperatures := [12, 19, 7];

Les crochets rassemblent plusieurs valeurs en une seule — un tableau. Ici trois entiers, dans cet ordre, sous le nom temperatures. Comme pour une variable ordinaire, le type se suit tout seul : le compilateur lit trois entiers et en déduit un tableau d’entiers.

Toutes les valeurs d’un tableau sont du même type. On ne mélange pas des nombres et des textes dans le même : un tableau de textes s’écrit ["a", "b"], et il ne recevra jamais un nombre.

for … in … prend les valeurs une à une

for mesure in temperatures {

À chaque tour, mesure vaut l’élément suivant. Pas d’indice, pas de compteur, pas de condition à écrire : la boucle s’arrête quand le tableau est épuisé, et vous n’avez pas à savoir combien il en contenait.

Comparez avec la sous-section précédente. Là-bas, il fallait initialiser un compteur, écrire la condition, penser à l’avancement — trois occasions de se tromper, dont la plus classique est de s’arrêter un cran trop tôt ou trop tard. Ici, ces trois-là n’existent pas.

mesure est locale à la boucle, comme le i d’un for compté.

Laquelle choisir

  • for … in dès que vous parcourez des valeurs. C’est le cas courant, et c’est celui qui se lit.
  • for compté quand c’est le rang qui vous intéresse et non la valeur — compter à l’envers, avancer de deux en deux, ou avoir besoin du numéro de la position.

break et continue fonctionnent dans les deux, à l’identique.

À vous

  • Ajoutez une quatrième mesure au tableau : la boucle la prend sans qu’on touche à rien d’autre. C’est tout l’intérêt.
  • Faites un tableau de textes — var noms := ["Simon", "Magus"]; — et parcourez-le.
  • Affichez seulement les mesures au-dessus de 10, avec un if dans le corps.
  • Sortez de la boucle dès la première mesure au-dessus de 15, avec break.