Recherche de site Web

Comment parcourir les tables dans Lua


Créez une structure qui facilite la recherche des données stockées.

Dans le langage de programmation Lua, un tableau est appelé une table. Une table est utilisée dans 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.

Créer une table dans Lua

Pour créer une table dans 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' }

Vous pouvez également créer un tableau associé (appelé carte ou dictionnaire dans certaines langues). Vous pouvez ajouter des clés arbitraires au tableau 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 la fonction assert() :

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

Vous disposez maintenant de deux tables : une mytable de style liste et une myarray de style tableau associatif.

Itérer sur une table avec des paires

La fonction pairs() de Lua 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 le résultat :

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, la table mytable contient les valeurs zombie et apocalypse. Il ne contient aucune clé, mais Lua peut improviser :

print('pairs of mytable:')

for k,v in pairs(mytable) do
  print(k,v)
end

Voici le résultat :

1   zombie
2   apocalypse

Itérer sur une table avec des ipairs

Pour tenir compte du fait que les tables sans clés sont courantes, Lua fournit également la fonction ipairs. 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 des paires :

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 uniquement les entrées indexées :

1   zombie
2   apocalypse

La paire clé-valeur a cependant é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ération de 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 par 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, utiliser une table Lua a beaucoup plus de sens 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ûre.

Articles connexes: