Itérer avec pairs()
Fait partie de la section Logique et déroulement du programme du Journey Lua de Coddy. Leçon 1 sur 54.
pairs() te permet de le faire en parcourant toutes les entrées d’une table, quel que soit le type des clés.La syntaxe pour utiliser pairs() dans une boucle for ressemble à ceci :for key, value in pairs(myTable) do
-- utilisez key et value ici
endpairs() fournit à la fois la clé et la valeur correspondante. Cela signifie que tu peux accéder aux deux informations et les utiliser en même temps.Voici un exemple pratique avec l’inventaire d’un joueur :local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() fonctionne avec tout type de clé, y compris les chaînes de caractères, les nombres ou même d’autres tables.Pour le défi : construire une chaîneLe défi ci-dessous te demande de renvoyer chaque entrée sous forme d’une seule chaîne ; voici donc un rappel de deux outils de manipulation des chaînes vus dans les bases. Tu joins des chaînes avec l’opérateur de concaténation, qui se compose de deux points (..). Par exemple, "Hello" .. " " .. "World" donne "Hello World".Si tu as besoin de formater du texte sur plusieurs lignes, tu peux utiliser le caractère d’échappement de nouvelle ligne "\n". Lorsque Lua rencontre "\n" dans une chaîne, il l’interprète comme une commande lui indiquant de passer à la ligne suivante.Par exemple, print("Line 1\nLine 2") affichera :Line 1
Line 2Défi
FacileÉcris une fonction printInventory qui prend une table inventory et renvoie une chaîne formatée répertoriant tous les articles et leurs quantités.
Utilise pairs() pour parcourir la table d’inventaire et créer une chaîne où chaque ligne affiche le nom d’un article suivi de sa quantité au format item: quantity. Chaque article doit se trouver sur une ligne distincte.
Pour placer chaque article sur sa propre ligne, utilise le caractère de nouvelle ligne "\n" entre les entrées. Par exemple, "apple: 5\nbanana: 3" s’affichera sur deux lignes distinctes. Veille à ne pas ajouter de "\n" au début, avant le premier article : ajoute-le uniquement entre les articles.
Paramètres :
inventory(table) : une table de type dictionnaire dont les clés sont les noms des articles (chaînes) et les valeurs, leurs quantités (nombres)
Valeur renvoyée : une chaîne contenant chaque article et sa quantité sur une ligne distincte, séparés par "\n". Exemple de résultat pour {apple=5, banana=3} :apple: 5banana: 3
Essayez vous-même
function printInventory(inventory)
-- Pour formater la sortie, vous pouvez concaténer des chaînes à l’aide de l’opérateur '..'.
-- Pour ajouter une nouvelle ligne, utilisez le caractère spécial '\n'.
-- Vous pourriez avoir besoin d’un moyen de savoir si vous ajoutez le premier élément ou un élément suivant
-- pour décider s’il faut ajouter un saut de ligne avant l’élément.
-- Écrivez le code ici
endCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et déroulement du programme
1Itération avancée des tables
Itérer avec pairs()Itérer avec ipairs()pairs() contre ipairs()Récapitulatif - Fiche de personnage2Fonctions supplémentaires de la bibliothèque table
table.concat()construction de tables et unpack()table.sort()Tri personnalisé avec des fonctionsRécapitulatif - Tableau des meilleurs scores3Concepts avancés des fonctions
Retourner plusieurs valeursFonctions variadiques (...)Les fonctions comme valeurs de première classeFonctions anonymesQu’est-ce qu’une fermeture ?Récapitulatif - Gestionnaire d’événements simpleEntraînez-vous par vous-même : Compilateur Lua en ligne