Itérer avec pairs()
Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 1 sur 54.
Lorsque vous travaillez avec des tables de type dictionnaire en Lua, vous avez souvent besoin d'accéder à chaque paire clé-valeur stockée à l'intérieur. La fonction pairs() rend cela possible en vous permettant de parcourir 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
endÀ chaque itération de la boucle, pairs() fournit à la fois la clé et sa valeur correspondante. Cela signifie que vous pouvez accéder aux deux informations et les manipuler 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)
endCe code affichera le nom de chaque article et sa quantité. La fonction pairs() fonctionne avec n'importe quel type de clé, y compris les chaînes de caractères, les nombres ou même d'autres tables.
Défi
FacileÉcrivez une fonction printInventory qui prend une table inventory et renvoie une chaîne formatée listant tous les articles et leurs quantités.
Utilisez pairs() pour parcourir la table inventory et construire une chaîne où chaque ligne affiche le nom d'un article suivi de sa quantité au format item: quantity. Chaque article doit être sur une ligne séparée.
Pour placer chaque article sur sa propre ligne, utilisez le caractère de nouvelle ligne "\n" entre les entrées. Par exemple, "apple: 5\nbanana: 3" s'affichera sur deux lignes distinctes. Veillez à ne pas ajouter de "\n" initial avant le premier article — ajoutez-le uniquement entre les articles.
Paramètres :
inventory(table) : Une table de type dictionnaire où les clés sont des noms d'articles (chaînes de caractères) et les valeurs sont des quantités (nombres)
Retourne : Une chaîne avec chaque article et sa quantité sur une ligne séparée, séparés par "\n". Exemple de sortie pour {apple=5, banana=3} :apple: 5banana: 3
Aide-mémoire
La fonction pairs() vous permet de parcourir toutes les paires clé-valeur d'une table de type dictionnaire :
for key, value in pairs(myTable) do
-- utilisez key et value ici
endLors de chaque itération, pairs() fournit à la fois la clé et sa valeur correspondante, vous permettant d'accéder aux deux informations simultanément.
Exemple avec une table d'inventaire :
local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endLa fonction pairs() fonctionne avec n'importe quel type de clé, y compris les chaînes de caractères, les nombres ou même d'autres tables.
Essayez vous-même
function printInventory(inventory)
-- É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