arrays - different - ¿Cómo iterar a través de la tabla en Lua?
string concat lua (2)
Para iterar sobre todos los pares clave-valor en una tabla, puede usar pairs
:
for k, v in pairs(arr) do
print(k, v[1], v[2], v[3])
end
productos:
pears 2 p green
apples 0 a red
oranges 1 o orange
Editar : Tenga en cuenta que Lua no garantiza ningún orden de iteración para la parte asociativa de la tabla. Si desea acceder a los artículos en un orden específico, recupere las claves de arr
y ordénelas. Luego acceda a través de las claves ordenadas:
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
productos:
apples a red 5
oranges o orange 12
pears p green 7
Entonces, tengo una tabla algo así:
arr =
{
apples = { ''a'', "red", 5 },
oranges = { ''o'', "orange", 12 },
pears = { ''p'', "green", 7 }
}
No parece que sea posible acceder a ellos según su índice, y los valores en sí mismos son tablas, por lo que acabo de convertir el primer valor de la tabla anidada en su índice, por lo que ahora se ve así:
arr =
{
apples = { 0, ''a'', "red", 5 },
oranges = { 1, ''o'', "orange", 12 },
pears = { 2, ''p'', "green", 7 }
}
Entonces, cada vez que uso una de estas tablas, sé lo que es el índice, pero todavía no puedo acceder a la tabla usando el índice, así que comencé a escribir una función que pasa por todas ellas y verifico los índices hasta encuentra el correcto. Entonces me di cuenta ... ¿cómo puedo recorrerlos si no puedo referirme a ellos por su índice? Entonces, ahora estoy atascado. Realmente quiero ser capaz de escribir arr.apples vs arr [1] la mayor parte del tiempo, pero por supuesto es necesario hacer las dos cosas a veces.
Si desea hacer referencia a una tabla anidada por varias teclas, puede asignarlas a claves separadas. Las tablas no están duplicadas, y todavía hacen referencia a los mismos valores.
arr = {}
apples = {''a'', "red", 5 }
arr.apples = apples
arr[1] = apples
Este bloque de código le permite iterar a través de todos los pares clave-valor en una tabla ( http://lua-users.org/wiki/TablesTutorial ):
for k,v in pairs(t) do
print(k,v)
end