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

-- Crear un array
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

local myArray = {10, 20, 30, 40, 50}

-- 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

-- Crear un array
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

array = {"Lua", "Tutorial"}

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

array = {}

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

-- Crear un array
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

-- Crear un array
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

-- Crear un array
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

-- Inicializar el array
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

-- Inicializar el array
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