Чтобы сделать то, что вы пытаетесь сделать из Lua, вам в основном нужно сбросить метатабель из основной таблицы, затем вызвать на нем tostring
, а затем вернуть метатабель обратно.Например:
setmetatable(t, {__tostring = function(self)
local temp = getmetatable(self)
setmetatable(self, nil)
local ret = 'MyTable is: ' .. tostring(self)
setmetatable(self, temp)
return ret
end,
})
Также обратите внимание, что метафункция __tostring
должна возвращать строку, а не просто печатать ее.