pairs() vs. ipairs()
Fait partie de la section Logique et flux du Journey Lua de Coddy — leçon 3 sur 54.
Maintenant que vous avez appris à la fois pairs() et ipairs(), il est important de comprendre quand utiliser chacun d'eux. Le choix dépend entièrement de la structure de votre table et de ce que vous essayez d'accomplir.
Utilisez ipairs() lorsque vous avez une table de type liste avec des clés entières séquentielles commençant à 1. Il traite les éléments dans l'ordre et s'arrête à la première valeur nil, ce qui le rend parfait pour les tableaux où l'ordre est important.
Utilisez pairs() lorsque votre table possède des clés de type chaîne, des types de clés mixtes, ou lorsque vous avez besoin d'accéder à toutes les entrées indépendamment des lacunes. Il parcourt chaque paire clé-valeur de la table sans ordre spécifique.
Considérez ce tableau mixte :
local gameData = {
"Level 1",
"Level 2",
"Level 3",
currentLevel = 2,
playerName = "Hero"
}Si vous utilisez ipairs(), vous ne verrez que les trois chaînes de niveau. Si vous utilisez pairs(), vous verrez les cinq entrées, y compris les clés de type chaîne.
Défi
FacileÉcrivez une fonction countSequentialItems qui prend une table data et renvoie le nombre d'éléments indexés par des entiers séquentiels.
Utilisez ipairs() pour compter combien d'éléments existent dans la partie séquentielle de la table (en commençant par l'index 1 jusqu'au premier nil). Cela vous aidera à comprendre la différence entre ipairs() et pairs() lors de l'utilisation de tables mixtes.
Paramètres :
data(table) : Une table mixte contenant à la fois des clés entières séquentielles et des clés de type chaîne de caractères
Retourne : Le nombre d'éléments séquentiels (nombre)
Essayez vous-même
function countSequentialItems(data)
-- É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 Logique et flux
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