exemplo inspirado no toString() da linguagem Java.
--
-- teste.lua
--
local tbl;
tbl = setmetatable({chave1 = "123", chave2 = "valor"}, {
__tostring = function( self )
local x = nil;
for k, v in pairs(self) do
x = string.format("%s %s:%s", true and x or "", k, v);
end
return string.format('TABELA:%q', x:match( "^%s*(.-)%s*$" ));
end
});
print('tbl ', tbl);
print('type ', type(tbl));
print('chave1 ', tbl.chave1);
print('chave2 ', tbl.chave2);
print('nonexist', tbl.nonexist);
--- eof --
$ lua-5.1 table.lua
tbl TABELA:"chave2:valor chave1:123"
type table
chave1 123
chave2 valor
nonexist nil