2012-02-08 10 views
7

Soy nuevo en Lua y quiero imprimir el contenido de una tabla para depuración. Puedo hacerlo iterando sobre la mesa yo mismo. Sin embargo, dado que esto me parece un problema muy común, creo que debe haber una manera de hacerlo o alguien debe haber escrito una buena biblioteca que lo haga. ¿Cuál es la forma estándar de hacer esto en Lua?Representación de cadena legible por humanos de la tabla en Lua

Respuesta

3

Para mejor o peor, no hay un estándar. Lua es conocida por lo que excluye tanto como por lo que incluye. No hace suposiciones sobre las representaciones de cadenas correctas porque no hay una forma única de manejar cosas como formatos, tablas anidadas, representación de funciones o ciclos de tablas. Dicho esto, no hace daño comenzar con una biblioteca Lua "con baterías incluidas". Tal vez considere Penlight. Su pl.pretty.write hace el truco.

3

Esta es una instancia del problema general de la serialización de tablas.

Eche un vistazo a at the Table Serialization page at lua-users para algunas implementaciones serias.

Mi lanzar en él se suele definir rápidamente una función como

function lt(t) for k,v in pairs(t) do print(k,v) end end 
+0

vi esa página, pero les resulta difícil de creer que un tal get problema común de resolverse una y otra vez y de una manera tan prolija. – ajmurmann

+2

es por eso que una instalación completa de Lua es de aproximadamente 1Mb (frente a python con 43.3 MB). Usted tiene un punto, pero de nuevo, si bien es posible que necesite la función, muchos otros podrían no (piense en incluir a Lua). No necesita implementarlo una y otra vez, simplemente colóquelo en un archivo, y 'requiérelo' según sea necesario, o póngalo en la variable de entorno 'LUA_INIT', que lo cargará automáticamente (vea el [* independiente * sección] (http://www.lua.org/manual/5.2/manual.html#7) del manual de Lua). – jpjacobs

+2

@ajmurmann - Es difícil de creer, es cierto. Pero Lua es conocida por lo que excluye tanto como por lo que incluye. No hace suposiciones sobre representaciones de cadenas adecuadas porque no hay una sola forma de manejar cosas como formatos, tablas anidadas, representación de funciones o ciclos de tabla. Dicho esto, no hace daño comenzar con una biblioteca Lua "con baterías incluidas". Tal vez considere [Penlight] (http://stevedonovan.github.com/Penlight/). [pl.pretty.write] (http://stevedonovan.github.com/Penlight/api/modules/pl.pretty.html#write) hace el truco. –

Cuestiones relacionadas