construction de tables et unpack()
Fait partie de la section Logique et flux du Journey Lua de Coddy. Leçon 6 sur 54.
unpack(). Elles sont particulièrement utiles lorsque vous travaillez avec des fonctions qui nécessitent une gestion flexible des arguments.Vous pouvez capturer plusieurs valeurs dans une table de type liste à l’aide de la syntaxe de constructeur de table avec des accolades. Cela regroupe toutes les valeurs dans une seule structure de table.local args = {10, 20, 30}
print(args[1]) -- Sortie : 10
print(#args) -- Sortie : 3unpack() fait l’inverse. Elle prend une table de type liste et renvoie tous ses éléments en tant que valeurs distinctes. Cela vous permet de transmettre le contenu d’une table comme arguments individuels à une fonction.Important : Bien que les versions plus récentes de Lua (5.2+) aient déplacé cette fonction vers table.unpack(), cet environnement exécute Lua 5.1 ; vous devez donc utiliser la fonction globale unpack().local numbers = {5, 10, 15}
print(unpack(numbers)) -- Sortie : 5 10 15Défi
FacileÉcrivez une fonction forwardArguments qui prend trois nombres a, b et c, et renvoie leur somme en utilisant la construction d’une table et unpack().
Créez une table contenant les trois arguments à l’aide de la syntaxe {a, b, c}, puis décompactez-les et transmettez-les à une autre fonction qui calcule leur somme.
Remarque : Veuillez utiliser la fonction globale unpack() plutôt que table.unpack() afin de garantir la compatibilité avec cet environnement.
Logique :
- Utilisez
{a, b, c}pour créer une table contenant les trois arguments - Créez une fonction distincte appelée
sumqui prend trois paramètres et renvoie leur somme - Utilisez
unpack()pour transmettre les valeurs de la table à la fonctionsum - Renvoyez le résultat de la fonction
sum
Paramètres :
a(number) : Premier nombreb(number) : Deuxième nombrec(number) : Troisième nombre
Renvoie : La somme des trois nombres (number)
Essayez vous-même
function forwardArguments(a, b, c)
-- Créer une fonction séparée qui calcule la somme
-- Créer une table contenant les trois arguments
-- Déballer la table et passer les valeurs à la fonction sum
-- Hint: Utilisez la fonction globale 'unpack' pour étendre les arguments de la table
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 flux
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