Comment itérer sur des tables en Lua

Dans le langage de programmation Lua, un tableau est appelé une table. Une table est utilisée en Lua pour stocker des données. Si vous stockez beaucoup de données de manière structurée, il est utile de connaître vos options pour récupérer ces données lorsque vous en avez besoin.
Contents
Créer un tableau en Lua
Pour créer une table en Lua, vous instanciez la table avec un nom arbitraire :
mytable = {}
Il existe différentes manières de structurer vos données dans un tableau. Vous pouvez le remplir avec des valeurs, en créant essentiellement une liste (appelée liste dans certaines langues):
mytable = { 'zombie', 'apocalypse' }
Ou vous pouvez créer un tableau associé (appelé un carte ou dictionnaire dans certaines langues). Vous pouvez ajouter des clés arbitraires à la table en utilisant la notation par points. Vous pouvez également ajouter une valeur à cette clé de la même manière que vous ajoutez une valeur à une variable :
myarray = {}
myarray.baz = 'happy'
myarray.qux = 'halloween'
Vous pouvez ajouter une vérification avec le assert()
fonction:
Vous avez maintenant deux tables : une de style liste mytable
et un style de tableau associatif myarray
.
Itérer sur une table avec des paires
de Lua pairs()
La fonction extrait les paires clé et valeur d’une table.
print('pairs of myarray:')for k,v in pairs(myarray) do
print(k,v)
end
Voici la sortie :
pairs of myarray:
baz happy
qux halloween
S’il n’y a pas de clés dans une table, Lua utilise un index. Par exemple, le mytable
le tableau contient les valeurs zombie
et apocalypse
. Il ne contient pas de clés, mais Lua peut improviser :
print('pairs of mytable:')for k,v in pairs(mytable) do
print(k,v)
end
Voici la sortie :
1 zombie
2 apocalypse
Itérer sur une table avec des paires d’ipaires
Pour tenir compte du fait que les tables sans clés sont courantes, Lua fournit également le ipairs
fonction. Cette fonction extrait l’index et la valeur :
print('ipairs of mytable:')for i,v in ipairs(mytable) do
print(i,v)
end
La sortie est, dans ce cas, la même que la sortie de pairs
:
1 zombie
2 apocalypse
Cependant, observez ce qui se passe lorsque vous ajoutez une paire clé/valeur à mytable
:
mytable.surprise = 'this value has a key'print('ipairs of mytable:')
for i,v in ipairs(mytable) do
print(i,v)
end
Lua ignore la clé et la valeur car ipairs
récupère seulement entrées indexées :
1 zombie
2 apocalypse
La paire clé-valeur, cependant, a été stockée dans la table :
print('pairs of mytable:')for k,v in ipairs(mytable) do
print(k,v)
end
Le résultat:
1 zombie
2 apocalypse
surprise this value has a key
Récupérer des valeurs arbitraires
Vous n’avez pas besoin de parcourir une table pour en extraire des données. Vous pouvez appeler des données arbitraires par index ou clé :
print('call by index:')
print(mytable[2])
print(mytable[1])
print(myarray[2])
print(myarray[1])print('call by key:')
print(myarray['qux'])
print(myarray['baz'])
print(mytable['surprise'])
Le résultat:
call by index:
apocalypse
zombie
nil
nilcall by key:
halloween
happy
this value has a key
Structures de données
Parfois, l’utilisation d’une table Lua est beaucoup plus logique que d’essayer de suivre des dizaines de variables individuelles. Une fois que vous avez compris comment structurer et récupérer des données dans un langage, vous êtes en mesure de générer des données complexes de manière organisée et sécurisée.