在lua中,是否可以序列化函数(没有upvalues)并将它们存储而不使用LOADSTRING ?
答案 0 :(得分:2)
您可以在没有loadstring
的情况下序列化并存储它们 - 使用string.dump
。如果你想要重新实现它们,你只需要loadstring
。
如果您以后需要重用实际功能,(而不是为了其他一些简单的目的,比如比较),您仍然需要至少访问loadstring
的字符串版本,因为这是唯一允许的设施你可以动态评估Lua源码。
如果你有,你可以尝试: 1)如果您有权访问,请修改Lua引擎本身以保存某处的函数定义源代码。 2)将Lua字节码写入Lua中的Lua源转换器。使用Lua的简单虚拟机,它并不像听起来那么艰巨。
如果您完全无法访问loadstring
,可以尝试在Lua中编写Lua VM。这比简单的转换器更难,但仍然可行。