Menu
CoddyTech

construction de tables et unpack()

Fait partie de la section Logique et déroulement du programme du Journey Lua de Coddy. Leçon 6 sur 54.

Lua propose une paire complémentaire de techniques pour travailler avec plusieurs valeurs : la construction de tables et unpack(). Elles sont particulièrement utiles lorsqu’on travaille avec des fonctions qui nécessitent une gestion flexible des arguments.Tu peux capturer plusieurs valeurs dans une table de type liste à l’aide de la syntaxe du 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 : 3
La fonction unpack() fait l’inverse. Elle prend une table de type liste et renvoie tous ses éléments sous forme de valeurs séparées. Cela vous permet de transmettre le contenu de la table à une fonction sous forme d’arguments individuels.Important : Bien que les versions plus récentes de Lua (5.2+) aient déplacé cette fonction vers table.unpack(), cet environnement utilise Lua 5.1 ; tu dois donc utiliser la fonction globale unpack().
local numbers = {5, 10, 15}
print(unpack(numbers))  -- Sortie : 5    10    15
Ces techniques fonctionnent parfaitement ensemble. Tu peux regrouper des valeurs dans une table, manipuler la table, puis la décomposer en valeurs individuelles.
challenge icon

Défi

Facile

Écris une fonction forwardArguments qui prend trois nombres a, b et c, et renvoie leur somme en construisant une table et en utilisant unpack().

Crée une table contenant les trois arguments avec la syntaxe {a, b, c}, puis décompose-la et passe ses valeurs à une autre fonction qui calcule leur somme.

Remarque : Utilise la fonction globale unpack() plutôt que table.unpack() pour garantir la compatibilité avec cet environnement.

Logique :

  • Utilise {a, b, c} pour créer une table contenant les trois arguments
  • Crée une fonction distincte appelée sum qui prend trois paramètres et renvoie leur somme
  • Utilise unpack() pour passer les valeurs de la table à la fonction sum
  • Renvoie le résultat de la fonction sum

Paramètres :

  • a (nombre) : Premier nombre
  • b (nombre) : Deuxième nombre
  • c (nombre) : Troisième nombre

Valeur renvoyée : La somme des trois nombres (nombre)

Essayez vous-même

function forwardArguments(a, b, c)
    -- Créez une fonction distincte qui calcule la somme

    -- Créez une table contenant les trois arguments

    -- Décomposez la table et transmettez les valeurs à la fonction de calcul de la somme
    -- Indice : utilisez la fonction globale 'unpack' pour décomposer les arguments contenus dans la table

end
quiz iconTestez-vous

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 déroulement du programme

Entraînez-vous par vous-même : Compilateur Lua en ligne