我们需要序列化一个包含字符串、数字、表和函数的 Lua 表。Programming Lua 书中有代码可以序列化由字符串、数字和表格组成的表格。我们试图调整这个函数来增加序列化函数的能力。具体来说,我们为 type == 'function' 添加了一个案例,并在函数上调用了 string.dump:
if type(o) == "number" then
return tostring(o)
elseif type(o) == "function" then
return "loadstring("..string.dump(o)..")"
else
-- assume it is a string
return string.format("%q", o)
end
这将 Lua 字节码注入到明文表表示的其余部分中。这是我们能想到的最接近的东西。
我们不在乎他的序列化结果是否是人类可读的,它只需要能够像这样工作:
mytable = [some complicated lua table with functions]
dump = dump_t(mytable)
...
loaded_table = load_t(dump)
有任何想法吗?