Lua - 没有loadtring的序列化函数?

时间:2012-05-29 15:08:40

标签: function serialization lua storage

在lua中,是否可以序列化函数(没有upvalues)并将它们存储而不使用LOADSTRING

1 个答案:

答案 0 :(得分:2)

您可以在没有loadstring的情况下序列化并存储它们 - 使用string.dump。如果你想要重新实现它们,你只需要loadstring

如果您以后需要重用实际功能,(而不是为了其他一些简单的目的,比如比较),您仍然需要至少访问loadstring的字符串版本,因为这是唯一允许的设施你可以动态评估Lua源码。

如果你有,你可以尝试: 1)如果您有权访问,请修改Lua引擎本身以保存某处的函数定义源代码。 2)将Lua字节码写入Lua中的Lua源转换器。使用Lua的简单虚拟机,它并不像听起来那么艰巨。

如果您完全无法访问loadstring,可以尝试在Lua中编写Lua VM。这比简单的转换器更难,但仍然可行。