Página 1 de 1

Función Imprimir Tabla al estilo lua

Publicado: 25 Feb 2011 21:20
por webultra
Esta función la uso para ver todos los miembros de una tabla y verificar que esten tal y como los genere. La pueden modificar a su antojo ;) .
function ptbl(tbl, b, c)
	local s = b or " ";
	local ss = c or "";
	local log = ss.."table "..s.."={\r\n";
	if type(tbl) == "table" then
		for row, value in pairs(tbl) do
			local k = type(value);
			if k == "table" then
				log = log..ss..ptbl(value, "["..row.."]", ss.."\t");
			else
				log = log..ss..k..": ["..row.."] = \""..tostring(value).."\",\r\n"
			end
		end
		return log..ss.."}\r\n";
	else
		return tostring(tbl);
	end
end
Ejemplo de como llamarla (siempre regresa un string):
tabla = {"a", b=1, c={1,2}}
Dialog.Message("", ptbl(tabla))

Re: Función Imprimir Tabla al estilo lua

Publicado: 25 Feb 2011 21:32
por Ceone
genial, muchas gracias bro!

Re: Función Imprimir Tabla al estilo lua

Publicado: 26 Feb 2011 08:05
por rafaxplayer
Esta funcion bien podria estar en el includes de AMS no? "Table.Print"

Re: Función Imprimir Tabla al estilo lua

Publicado: 27 Feb 2011 01:01
por webultra
A wiwi, pueden modificarla para que no les muestre el tipo de campo pero...la verdad eso ya es de cada quien.

Por cierto, vi una función llamada TableToDelimited...No le veo necesidad porque según yo es lo mismo que table.concat :)

Re: Función Imprimir Tabla al estilo lua

Publicado: 18 Ago 2011 00:13
por abood1987
good

Re: Función Imprimir Tabla al estilo lua

Publicado: 16 Ene 2018 02:12
por Dow Sher
Excelente la voy a usar para algunas pruebas, gracias webultra

Re: Función Imprimir Tabla al estilo lua

Publicado: 16 Feb 2019 20:51
por Dow Sher
Me tomé la libertad de editar la función original para cambiar el formato de salida a uno que en verdad se pueda solo copiar y pegar en el editor de código y el intérprete de Lua realmente comprenda :penguin:
function ptbl(tbl, indexName, identationStyle, endCharacter)
  indexName = indexName or 'table = '
  identationStyle = identationStyle or ''
  endCharacter = endCharacter or ''
  local result = identationStyle .. indexName .. '{\r\n'
  if type(tbl) == 'table' then
    for row, value in pairs(tbl) do
      row = type(row) == 'number' and '' or row .. ' = '
      if type(value) == 'table' then
        result = result .. ptbl(value, row, identationStyle .. '  ', ',\r\n')
      else
        value = type(value) == 'string' and '"' .. tostring(value) .. '"' or tostring(value)
        result = result .. identationStyle .. '  ' .. row .. value .. ',\r\n'
      end
    end
    return result .. identationStyle .. '}' .. endCharacter
  else
    return tostring(tbl)
  end
end

local tabla = {
  'a',
  1,
  2,
  miOtraTabla = {
    b = 1,
    {
      'a',
      'b',
      'c'
    }
  },
}

print(ptbl(tabla))

Código: Seleccionar todo

table = {
  "a",
  1,
  2,
  miOtraTabla = {
    {
      "a",
      "b",
      "c",
    },
    b = 1,
  },
}