LUA 101 – Tablas

Uno de los lenguajes utilizados para desarrollar videojuegos es LUA (usado en Corona SDK) y una de las estructuras mas poderosas de este lenguaje son las tablas.

En otros lenguajes de programación existen estructuras de datos como las Clases pero LUA solo usa tablas como la única estructura de datos disponible, sin embargo con ellas es posible crear estructuras como Arreglos y Diccionarios. Veamos como se crea una tabla y como podemos manipularla.

Declaración e inicialización

LUA utiliza la expresion {} como constructor para crear una tabla en blanco y, como sucede en otros lenguajes, dentro de este constructor pueden agregarse valores como Strings o números separados por comas (,) para que inicie con valores por defecto o inicializar la tabla como un arreglo asociativo (llave – valor).

extraer Información de una tabla

Para extraer un valor contenido en una tabla de LUA se puede hacer colocando [] luego del nombre de la tabla y dentro de estos colocar el indice (posición del elemento dentro de la tabla) .

En caso de que la tabla haya sido creada como tabla de valores asociativos se usa el nombre de la llave que almacena el valor.

 

Iteración de una tabla

Para recorrer y explorar todos los valores de una tabla se puede hacer por medio de una estructura de ciclo FOR como se observa en los siguientes ejemplos:

Para obtener los elementos de una tabla con valores asociativos

 

Insertar elementos

Si requieres insertar elementos lo puedes hacer usando uno de los siguientes elementos:

En los métodos la letra t es el nombre de la tabla, pos indica la posición o indice y value el valor del elemento en la tabla.

Sin embargo el método insert funcionará de forma diferente si estamos trabajando con una tabla asociativa.

Como la tabla asociativa esta basada en elementos del tipo llave – valor, si usamos el método insert el nuevo valor será asignado a una llave con índice numérico. Para insertar una nueva llave – valor tenemos que asignar un nuevo nombre de propiedad siguiendo la regla: nombre_tabla.nombre_propiedad = el_valor  como sucede en el siguiente ejemplo:

Como pudimos observar en el ejemplo anterior las tablas asociativas insertan una llave valor de forma diferente. Esto es importante que lo tengas en cuenta pues aplica para todos los objetos que están basados en una tabla de datos (como por ejemplo los que puedes crear con la librería display en el framework de Corona).

Eliminar elementos

Para eliminar un elemento en una tabla se puede realizar usando uno de estos métodos:

Así como en los métodos insert la letra t es el nombre de la tabla, y pos indica la posición o índice del elemento

manipulación de tablas

LUA tiene un conjunto de métodos que nos permiten trabajar con tablas de una forma mas eficiente, veamos cuáles son y como podemos usarlos.

[su_table]

unpack( list [ ,  i  [ ,  j  ]  ]  )

  • list : Nombre de la tabla
  • i : índice o posición inicial
  • j : índice o posición final

Devuelve los elementos contenidos en una tabla.

[/su_table]

Por ejemplo:

[su_table]

table.concat (table [ , sep [ ,  i [ ,  j  ]  ]  ]  )

  • table : nombre de la tabla
  • sep : separador que se desea agregar entre los elementos concatenados
  • i : índice o posición inicial
  • j : índice o posición final

Devuelve un String con los elementos concatenados de la tabla

[/su_table]

Por ejemplo:

[su_table]

table.sort ( table )

  • table : nombre de la tabla

Método que permite ordenar los valores contenidos en una tabla.

[/su_table]

Por ejemplo:

Para poder sacar provecho de una tabla es muy importante conocer como manipularlas. ¿Conoces alguna función adicional para manipular tablas? Si tienes alguna duda o inquietud puedes dejarnos un comentario y con gusto complementaremos la información de esta publicación.

Espero hayas disfrutado y aprendido muchas cosas de esta entrada y por favor siéntete libre de compartir esta información en tus redes sociales para que otras personas interesadas también puedan conocer algo nuevo y que les pueda ayudar en sus proyectos futuros. ¡Hasta la próxima!