Las tablas son la única estructura de datos incorporada disponible en Lua. Esto puede ser elegante o confuso, dependiendo de cómo lo mires.
Una tabla Lua es una colección de pares clave-valor donde las claves son únicas y ni la clave ni el valor son nil
. Como tal, una tabla Lua puede parecerse a un diccionario, un hashmap o una matriz asociativa de otros idiomas. Muchos patrones estructurales se pueden construir con tablas: pilas, colas, conjuntos, listas, gráficos, etc. Finalmente, las tablas se pueden usar para construir clases en Lua y para crear un sistema de módulos .
Lua no impone ninguna regla particular sobre cómo se usan las tablas. Los elementos contenidos en una tabla pueden ser una mezcla de tipos de Lua. Así, por ejemplo, una tabla podría contener cadenas, funciones, valores booleanos, números e incluso otras tablas como valores o claves.
Se dice que una tabla Lua con teclas enteras positivas consecutivas que comienzan con 1 tiene una secuencia. Los pares clave-valor con claves enteras positivas son los elementos de la secuencia. Otros lenguajes llaman a esto una matriz basada en 1. Ciertas operaciones y funciones estándar solo funcionan en la secuencia de una tabla y algunas tienen un comportamiento no determinista cuando se aplican a una tabla sin una secuencia.
Establecer un valor en una tabla en nil
elimina de la tabla. Los iteradores ya no verían la clave relacionada. Al codificar una tabla con una secuencia, es importante evitar romper la secuencia; Solo elimine el último elemento o use una función, como la table.remove
estándar.eliminar, que desplaza los elementos hacia abajo para cerrar la brecha.