Donc, j'ai un tableau quelque chose dans ce sens:
arr =
{
apples = { 'a', "red", 5 },
oranges = { 'o', "orange", 12 },
pears = { 'p', "green", 7 }
}
Il ne semble pas qu'il soit possible d'y accéder en fonction de leur index, et les valeurs elles-mêmes sont des tables. Je viens donc d'indexer la première valeur de la table imbriquée.
arr =
{
apples = { 0, 'a', "red", 5 },
oranges = { 1, 'o', "orange", 12 },
pears = { 2, 'p', "green", 7 }
}
Ainsi, chaque fois que j'utilise l'une de ces tables, je sais ce qu'est l'index, mais je ne peux toujours pas accéder à la table à l'aide de l'index. J'ai donc commencé à écrire une fonction qui les parcourait toutes et à vérifier les index jusqu'à ce que il trouve le bon. Ensuite, j'ai réalisé ... comment puis-je les parcourir si je ne peux pas déjà les consulter par leur index? Alors maintenant je suis coincé. Je veux vraiment pouvoir taper arr.apples vs arr [1] la plupart du temps, mais bien sûr, il est nécessaire de faire les deux à la fois.
Pour parcourir toutes les paires clé-valeur d'une table, vous pouvez utiliser pairs
:
for k, v in pairs(arr) do
print(k, v[1], v[2], v[3])
end
les sorties:
pears 2 p green
apples 0 a red
oranges 1 o orange
Edit: Notez que Lua ne garantit aucun ordre d'itération pour la partie associative de la table. Si vous souhaitez accéder aux éléments dans un ordre spécifique, récupérez les clés de arr
et triez-les. Ensuite, accédez à arr
à travers les clés triées:
local ordered_keys = {}
for k in pairs(arr) do
table.insert(ordered_keys, k)
end
table.sort(ordered_keys)
for i = 1, #ordered_keys do
local k, v = ordered_keys[i], arr[ ordered_keys[i] ]
print(k, v[1], v[2], v[3])
end
les sorties:
apples a red 5
oranges o orange 12
pears p green 7
Si vous souhaitez faire référence à une table imbriquée à l'aide de plusieurs clés, vous pouvez simplement leur affecter des clés distinctes. Les tables ne sont pas dupliquées et font toujours référence aux mêmes valeurs.
arr = {}
apples = {'a', "red", 5 }
arr.apples = apples
arr[1] = apples
Ce bloc de code vous permet de parcourir toutes les paires clé-valeur d'une table ( http://lua-users.org/wiki/TablesTutorial ):
for k,v in pairs(t) do
print(k,v)
end