Tablas en Lua

Andaba en busca de una solución para pasar listas de nombres a los scripts en Lua y la misma era estúpidamente sencilla: tablas. Las tablas en Lua son muy versátiles, se comportan como un arreglo clásico, o como un stl::map. O sea, que puedes referirte a un elemento así: Tabla["llave"]=valor.
Desde C, creas y asignas valores así:

//a continuacion creamos una tabla que simula un arreglo de cadenas
lua_newtable(luaVM);
lua_pushnumber(luaVM, 1);    //indice
lua_pushstring(luaVM, "Valor 1");  //valor
lua_settable(luaVM, -3);
****

lua_setglobal(luaVM, "tabla");  //definimos el nombre de la tabla

Sencillo, no les parece? Acceder la lista desde Lua es fácil:

for k,v in ipairs(tabla) do print(k,v) end

En este caso usamos  ipairs porque queremos los índices. Si quisiéramos las llaves en el caso de un diccionario, que es ocmo se llaman las tablas tipo map, usaríamos pairs.

Comentarios