Menu
Coddy logo textTech

Itération sur les tables

Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 17 sur 73.

Vous avez déjà parcouru des tables Lua de nombreuses fois : Luau conserve exactement les mêmes boucles et ajoute des types aux variables de la boucle. Pour les tableaux, ipairs parcourt les éléments dans l'ordre, de l'index 1 jusqu'à #t, et vous pouvez annoter les deux variables :

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

N'oubliez pas que ipairs s'arrête au premier index manquant : un trou nil au milieu met fin à la boucle prématurément. C'est rarement un problème avec des tableaux bien entretenus, mais c'est utile à savoir.

Pour les maps, utilisez pairs, qui parcourt chaque paire clé/valeur : y compris les clés de type string. Dans une map {[string]: number}, les variables de la boucle sont naturellement une string et un number :

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

Une réserve cruciale : pairs parcourt les clés de la partie de hachage dans un ordre non garanti. Celui-ci peut différer d'une exécution à l'autre. Lorsque vous avez besoin d'une sortie déterministe (rapports triés, tests), rassemblez les clés dans un tableau, appliquez table.sort, puis parcourez les clés triées avec ipairs et utilisez-les pour indexer la map.

challenge icon

Défi

Facile

Crée un tableau typé temps: {number} initialisé avec 18, 21, 19 et 24.

Parcours-le avec ipairs en annotant les deux variables de boucle (day: number, temp: number). Pour chaque élément, affiche exactement :

Day 1: 18

(en utilisant l’interpolation de chaînes avec des accents graves), et ajoute chaque température à un total cumulé.

Après la boucle, affiche le total sur sa propre ligne.

Essayez vous-même

-- Écrivez le code ici
-- 1) déclarer temps : {number} = {18, 21, 19, 24}
-- 2) for day : number, temp : number in ipairs(temps) do ... end
--    imprimer `Day {day}: {temp}` et additionner dans total
-- 3) imprimer le total après la boucle
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à Luau

Entraînez-vous par vous-même : Compilateur Lua en ligne