Constructores de tablas

Los constructores de tablas son expresiones que crean tablas. Cada vez que se evalúa un constructor, se crea una nueva tabla. Un constructor puede utilizarse para crear una tabla vacía o para crear una tabla e inicializar algunos de sus campos.

La sintaxis general de los constructores es
tableconstructor ::= `{´ [fieldlist] `}´
fieldlist ::= field {fieldsep field} [fieldsep]
field ::= `[´ exp `]´ `=´ exp | Name `=´ exp |
exp fieldsep ::= `,´ | `;´
Crear una tabla vacía.
T={}
Crear una tabla como un array donde ' t[1] = 12, t[2] = 34, and t[3] = 56.
t = { 12, 34, 56 }

Cada campo de la forma " [exp1] = exp2 " añade una entrada a la tabla con clave " exp1 y valor " exp2.

El código siguiente crea una tabla idéntica a t = {12,34,56}.
t = { [1] = 12, [2] = 34, [3] = 56 }
Un campo de la forma " name = exp " equivale a " ["name"] = exp. El código siguiente crea una tabla donde ' t["a"] = 12, t["b"] = 23, and t["c"] = 56. Las dos tablas creadas a continuación son equivalentes.
t1 = { a = 12, b = 23, c = 56 }
t2 = { ["a"] = 12, ["b"] = 23, ["c"] = 56 }
Los campos de la forma " exp " equivalen a " [i] = exp, donde " i " son números enteros numéricos consecutivos, empezando por 1. Los campos de los otros formatos no afectan a este recuento. Las dos tablas creadas a continuación son equivalentes.
t1 = { 12, 34, 56 }
t2 = { [3] = 56, 12, 34 }
Si el último campo de la lista tiene la forma exp y la expresión es una llamada a función o una expresión vararg, entonces todos los valores devueltos por esta expresión entran en la lista consecutivamente. Para evitarlo, encierre la llamada a la función o la expresión vararg entre paréntesis (consulte Expresiones).
function foo() return 34, 56 end
t = { 12, foo() }
Función vararg que crea una tabla que contiene todos los argumentos pasados a la función. En este caso, la tabla resultante es la misma que " t = { 12, 34, 56 }
function maketable(...) return { ... } end
t = maketable(12,34,56)
La lista de campos puede tener un separador final opcional, por comodidad para el código generado por máquina. La tabla siguiente es una inicialización de tabla válida porque se ignora el , después del tercer valor.
t = { 12, 34, 56, }