Tablas
Tablas
En Conceptos básicos Lua vimos que existía un tipo de datos llamado tabla, estas son el único mecanismo de estructuración de datos en Lua.
Son comparables a lo que en otros lenguajes de programación se conocen como array, que de una forma sencilla es la asignación de varios valores a una única variable, se entenderá mejor en código.
Creando tablas
Para declarar una tabla o array se realiza como si de cualquier variable se tratara, solo que se usan
{}
para contener los datos
tabla = {} --declara una tabla vaciá
tabla1 = {"Ocitronix", "Programación básica"} -- una array de una dimensión
Usando tablas
Empecemos por la explicación de un array sencillo y genérico para la mayoría de lenguajes de programación.
Para asignar un valor a un array vacío, solo basta con seleccionar la clave o indice del dato
tabla = {} --crea el arreglo
tabla[1] = "uno"
tabla[2] = "dos"
Esto quiere decir que tabla ahora tiene asignados dos valores "uno" y "dos" imaginemos que es como si tuviéramos
tabla = {"uno","dos"}
.
Para leer un array solo vasta con ir a su clave
tabla = {"a","b","c"}
print( tabla[1] )
print( tabla[2] )
Propiedades Lua
Ahora que ya conocemos de forma general como se usan los array veremos las cualidades especificas que le da Lua a sus tables.
Creando tablas
No solo se puede asignar un valor usando un indice, sino que permite crear un nombre clave
tabla = {}
tabla[1] = "a" --se asigna el valor a al indice 1
tabla["iden"] = 3 -- se asigna el valor 3 a la llave "iden"
tabla.pos = "b" --asigna el valor "b" a la llave pos
También es posible asignar la llave al momento de declarar la tabla
tabla = { [1] = "a", [2] = "b", [3]= "c" }
tabla2 = { ["pos1"] = "a", ["pos2"] = "b", ["pos3"]= "c" }
Accediendo a tablas
Para acceder a los valores de una tabla se realiza igual que en un array normal con la particularidad de poder llamarlas usando un punto antes del identificador que no es un indice.
tabla = {"a", [2] = "b", ["ident"] = "hola"}
print(tabla[1])
print(tabla[2])
print(tabla["ident"])
print(tabla.ident)
Operador #
Cuando vimos Operadores en Lua vimos el operador longitud
#
que devolvía la longitud de caracteres de un string, si lo usas en una tabla podrás ver el tamaño de la misma.
tabla = {"a", "b", "c"}
print(#tabla)
Funciones
Lua ofrece unas instrucciones especificas para trabajar con tablas
table.insert
Sirve para agregar un valor a una tabla creada
tabla = {}
table.insert(t, 123)
tabla[2] = 321
print(t[1])
print(t[2])
También es posible seleccionar el indice al cual agregar el valor
tabla = {"a", "c"}
table.insert(tabla, 2, "b")
print(tabla[1], tabla[2], tabla[3])
table.remove
Elimina un ítem con el indice a eliminar
tabla = {"a", "b", "c"}
table.remove(tabla, 2)
print(t[1], t[2)]
table.concat
Sirve para unir los valores de un array
tabla = {"a", "b", "c"}
print(table.concat(tabla, ";"))
Iterador
En Estructuras de control en Lua observamos como hacer ciclos que bien nos serviría para llenar una tabla vacía o para imprimir el contenido.
Veamos el primer caso: supongamos que deseamos crear una tabla que guarde 100 números
tabla = {}
print("la tabla es de: "..#tabla)
for i=1,100 do
tabla[i] = i
end
print("la tabla es de: "..#tabla)
Bien ahora queremos imprimir en pantalla el contenido de la tabla y lo primero que se nos viene a la cabeza seria agregar lo siguiente:
for i=1,100 do
print(tabla[i])
end
Y funciona, pero en Estructuras de control en Lua mencionamos un loop for iterador que esta echo específicamente para recorrer tablas y se puede usar de dos formas:
función ipairs
La función ipairs actúa en dos pares un indice y un valor es algo asi como decir (1,tabla[1]),(2,tabla[2]), agreguemos el siguiente código a lo que ya tenemos
for i,v in ipairs(tabla) do
print(i,v)
end
Se imprimirá una lista de los 100 valores de la tabla con una estrucntura de indice y valor de la sigiente forma:
1 1
2 2
3 3
...
... -- y asi hasta
100 100
función pairs
Es similar a la función anterior con la diferencia de iterar sobre todas las parejas no solo indice valor sino clave valor y su estructura es:
tabla = {"a", "b", [123]="hola", "c", nombre="Ocitronix", "d", "e"}
for k,v in pairs(tabla) do
print(k,v)
end
En este caso se visualizara todo el contenido de la tabla
Este blog ha sido eliminado por un administrador de blog.
ResponderBorrar