Bienvenidos sean a este post, en el dia de hoy comenzaremos a hablar sobre estructuras de datos que en Lua equivale a las tablas, y si bien veremos que en este lenguaje la tablas son una forma mas eficiente de trabajar con respecto a las estructuras de datos tradicionales como pueden ser arrays o listas y como puede llevar un poco de tiempo acostumbrarse a esta nueva forma de trabajo veremos primero como son los arrays en sus distintas variedades y luego listas, si bien ya hemos hablado sobre arrays, o algo similar, en algunos posts anteriores hoy nos centraremos mas especificamente sobre ellos.

Anuncios

Para implementar arrays, o arreglos depende como los conozcas, en LUA simplemente se debe indexar una tabla con numeros enteros, los arrays no tienen un tamaño fijo (a diferencia de otros lenguajes) sino que crecen lo que necesiten pero nosotros al crearlo definimos su tamaño indirectamente, veamos el siguiente ejemplo:

a = {}
for i=1,1000 do
	a[i] = 0
end

En este caso creamos una tabla llamada a, perdon un array llamado a 😉 luego usaremos un bucle for que incrementara a i de 1 a 1000 y en este bucle usaremos a i como indice y el valor asociado sera 0, entonces tendremos un array con 1000 elementos con valor 0, veamos su salida:

tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> do
>> a = {}
>> for i = 1,1000 do
>> a[i] = 0
>> end
>> end
> print(#a)
1000
>
Anuncios

En este caso mostramos el total de elementos en el array, en cambio si buscamos algun elemento en el rango entre 1-1000, obtendremos esto:

> print(a[100])
0
> print(a[10])
0
> print(a[999])
0
>

Pero si lo hacemos por fuera del rango obtendremos esto:

> print(a[1001])
nil
> print(a[10001])
nil
>

Como pueden observar todo elemento por fuera del rango del array nos devolvera el valor nil porque no existe, al igual que otros lenguajes no se debe iniciar el array con el valor 1 sino tambien podemos iniciarlo desde el valor 0 o inclusive valores negativos, por ejemplo:

Anuncios
a = {}
for i=-5,5 do
	a[i] = 0
end

Esta forma de trabajar tambien es valida y funcionara pero siempre lo mas recomendable es comenzar desde el principio y en el caso de Lua siempre comenzar desde el 1 porque de lo contrario podemos tener dificultades para calcular el tamaño del array, de esto hemos hablado anteriormente, tambien podemos usar un constructor para completar los valores:

cuadrados = { 1, 4, 9, 16, 25, 36, 49, 64, 81 }

En este caso como vimos en tablas, Lua se encarga automaticamente de indexar los elementos ingresados en el constructor lo cual nos da la posibilidad de trabajar directamente el array de la siguiente forma:

> cuadrados = { 1,4,9,16,25,36,49,64,81 }
> for i=1,9 do
>> print(cuadrados[i])
>> end
1
4
9
16
25
36
49
64
81
>

La longitud del constructor puede ser tan larga como necesitas, aunque en realidad son algunos millones de elementos como maximo 😉

Anuncios

En resumen, hoy hemos visto como son los arrays en LUA, como se componen, como construirlos, como implementarlos, como se implementan automaticamente, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00