operator different concatenating arrays loops lua key lua-table

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