Site icon Maniac Geek

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.

Programmation et développement

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:

assert(myarray.baz == 'happy', 'unexpected value in myarray.baz')
assert(myarray.qux == 'halloween', 'unexpected value in myarray.qux')

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
nil

call 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.

Source

Quitter la version mobile