Lua - matrices
Las matrices son una disposición ordenada de objetos, que puede ser una matriz unidimensional que contiene una colección de filas o una matriz multidimensional que contiene varias filas y columnas.
En Lua, las matrices se implementan mediante tablas de indexación con números enteros. El tamaño de una matriz no es fijo y puede crecer según nuestros requisitos, sujeto a limitaciones de memoria.
Matriz unidimensional
Una matriz unidimensional se puede representar usando una estructura de tabla simple y se puede inicializar y leer usando un simple forlazo. A continuación se muestra un ejemplo.
array = {"Lua", "Tutorial"}
for i = 0, 2 do
print(array[i])
end
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
nil
Lua
Tutorial
Como puede ver en el código anterior, cuando intentamos acceder a un elemento en un índice que no está en la matriz, devuelve nil. En Lua, la indexación generalmente comienza en el índice 1. Pero también es posible crear objetos en el índice 0 y por debajo de 0. La matriz que usa índices negativos se muestra a continuación donde inicializamos la matriz usando un bucle for .
array = {}
for i= -2, 2 do
array[i] = i *2
end
for i = -2,2 do
print(array[i])
end
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
-4
-2
0
2
4
Matriz multidimensional
Las matrices multidimensionales se pueden implementar de dos formas.
- Matriz de matrices
- Matriz unidimensional manipulando índices
A continuación se muestra un ejemplo de matriz multidimensional de 3. 3 utilizando una matriz de matrices.
-- Initializing the array
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end
-- Accessing the array
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
1
2
3
2
4
6
3
6
9
A continuación se muestra un ejemplo de matriz multidimensional mediante la manipulación de índices.
-- Initializing the array
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
for col=1,maxColumns do
array[row*maxColumns +col] = row*col
end
end
-- Accessing the array
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
end
end
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
1
2
3
2
4
6
3
6
9
Como puede ver en el ejemplo anterior, los datos se almacenan en función de índices. Es posible colocar los elementos de forma dispersa y es la forma en que funciona la implementación de Lua de una matriz. Dado que no almacena valores nulos en Lua, es posible ahorrar mucha memoria sin ninguna técnica especial en Lua en comparación con las técnicas especiales utilizadas en otros lenguajes de programación.