Itérer avec ipairs()
Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 2 sur 54.
Alors que pairs() fonctionne avec n'importe quelle structure de table, Lua fournit une fonction spécialisée appelée ipairs() spécifiquement conçue pour les tables de type liste. Cette fonction parcourt les tables dans l'ordre séquentiel, en commençant par l'index 1 et en continuant jusqu'à ce qu'elle rencontre une valeur nil.
La syntaxe de ipairs() est similaire à celle de pairs() :
for index, value in ipairs(myList) do
-- utilisez l'index et la valeur ici
endVoici un exemple avec une liste d'objets de quête :
local questItems = {"Map", "Compass", "Torch", "Rope"}
for i, item in ipairs(questItems) do
print(i .. ". " .. item)
endSortie :
1. Map
2. Compass
3. Torch
4. RopeLa différence clé par rapport à pairs() est que ipairs() s'arrête immédiatement lorsqu'il trouve une valeur nil, même s'il y a d'autres éléments après.
Défi
FacileÉcrivez une fonction listTasks qui prend une table tasks et renvoie une chaîne formatée listant toutes les tâches avec leurs numéros de position.
Utilisez ipairs() pour parcourir les tâches dans l'ordre séquentiel et construire une chaîne où chaque ligne affiche le numéro de la tâche suivi du nom de la tâche au format number. task. Chaque tâche doit être sur une ligne distincte.
Paramètres :
tasks(table) : Une table de type liste contenant les noms des tâches sous forme de chaînes de caractères
Retourne : Une chaîne avec chaque tâche numérotée sur une ligne distincte. Format :
1. task1
2. task2
3. task3Aide-mémoire
ipairs() parcourt les tables de type liste dans l'ordre séquentiel, en commençant par l'index 1 et en s'arrêtant à la première valeur nil :
for index, value in ipairs(myList) do
-- utilisez index et value ici
endExemple :
local questItems = {"Map", "Compass", "Torch", "Rope"}
for i, item in ipairs(questItems) do
print(i .. ". " .. item)
end
-- Sortie :
-- 1. Map
-- 2. Compass
-- 3. Torch
-- 4. RopeDifférence clé : Contrairement à pairs(), ipairs() s'arrête immédiatement lorsqu'il rencontre une valeur nil, même si d'autres éléments existent après.
Essayez vous-même
function listTasks(tasks)
-- Écrivez le code ici
end
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logic & Flow
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() vs. ipairs()Récapitulatif - Fiche de personnage2Plus de fonctions de la bibliothèque table
table.concat()Construction de table & unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des scores3Concepts avancés sur les fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu'est-ce qu'une closure ?Récapitulatif - Gestionnaire d'événements simple