Lua Arrays
Un array es una colección de elementos del mismo tipo de datos ordenados en una secuencia determinada; puede ser un array unidimensional o multidimensional.
En Lua, un array no es un tipo de datos específico, sino una estructura de datos utilizada para almacenar un conjunto de valores.
En realidad, Lua no tiene un tipo de array específico, sino que utiliza lo que se llama"table"una estructura de datos para implementar la funcionalidad de los arrays.
Los índices de los arrays en Lua pueden representarse con números enteros, y el tamaño del array no es fijo.
En Lua, los valores de índice comienzan en11, pero también puedes especificar que comiencen en 0.
Array unidimensional
Un array unidimensional es el tipo de array más simple; su estructura lógica es una tabla lineal.
Acceso a elementos de un array mediante índices:
Ejemplo
local myArray = {10, 20, 30, 40, 50}
-- Acceder a un elemento del array
print(myArray[1]) -- Salida 10
print(myArray[3]) -- Salida 30
El resultado de ejecutar el código anterior es:
10 30
Para calcular la longitud del array (es decir, el número de elementos), puedes usar#el operador:
Ejemplo
-- Calcular la longitud del array
local length = #myArray
print(length) -- Salida 5
El resultado de ejecutar el código anterior es:
5
Los arrays unidimensionales puedenforrecorrer los elementos del array usando un bucle, como en el siguiente ejemplo:
Ejemplo
local myArray = {10, 20, 30, 40, 50}
-- Recorrer el array en bucle
for i = 1, #myArray do
print(myArray[i])
end
El resultado de ejecutar el código anterior es:
10 20 30 40 50
Los índices de Lua comienzan en 1 por defecto:
Ejemplo
for i= 0, 2 do
print(array[i])
end
El resultado de ejecutar el código anterior es:
nil Lua Tutorial
Como puedes ver, podemos usar índices enteros para acceder a los elementos del array; si el índice especificado no tiene valor, se devuelvenil。
Además, también podemos usar números negativos como índices del array:
Ejemplo
for i= -2, 2 do
array[i] = i *2
end
for i = -2,2 do
print(array[i])
end
El resultado de ejecutar el código anterior es:
-4 -2 0 2 4
También podemos modificar elementos del array:
Ejemplo
local myArray = {10, 20, 30, 40, 50}
-- Modificar un elemento del array
myArray[2] = 25
-- Recorrer el array en bucle
for i = 1, #myArray do
print(myArray[i])
end
El resultado de ejecutar el código anterior es:
10 25 30 40 50
También podemos agregar elementos al array:
Ejemplo
local myArray = {10, 20, 30, 40, 50}
-- Agregar un nuevo elemento al final del array
myArray[#myArray + 1] = 60
-- Recorrer el array en bucle
for i = 1, #myArray do
print(myArray[i])
end
El resultado de ejecutar el código anterior es:
10 20 30 40 50 60
También podemos eliminar elementos del array:
Ejemplo
local myArray = {10, 20, 30, 40, 50}
-- Eliminar el tercer elemento
table.remove(myArray, 3)
-- Recorrer el array en bucle
for i = 1, #myArray do
print(myArray[i])
end
El resultado de ejecutar el código anterior es:
10 20 40 50
Array multidimensional
Un array multidimensional es aquel en el que el array contiene arrays, o la clave de índice de un array unidimensional corresponde a un array.
El siguiente es un array multidimensional de tres filas y tres columnas:
Ejemplo
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end
-- Acceder al array
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
El resultado de ejecutar el código anterior es:
1 2 3 2 4 6 3 6 9
Un array multidimensional de tres filas y tres columnas con diferentes claves de índice:
Ejemplo
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
for col=1,maxColumns do
array[row*maxColumns +col] = row*col
end
end
-- Acceder al array
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
end
end
El resultado de ejecutar el código anterior es:
1 2 3 2 4 6 3 6 9
Como puedes ver, en los ejemplos anteriores, el array establece valores de índice específicos, lo que evita la aparición de valores nil y ayuda a ahorrar espacio de memoria.
Otras extensiones