【发布时间】:2018-10-18 19:26:45
【问题描述】:
我有 someTabe = {}
someTabe.foo = function (x,y)
return x + y
end
我怎样才能得到品脱(function"(function (x,y) return x + y end)???不返回结果。
【问题讨论】:
我有 someTabe = {}
someTabe.foo = function (x,y)
return x + y
end
我怎样才能得到品脱(function"(function (x,y) return x + y end)???不返回结果。
【问题讨论】:
您无法从 Lua 内部恢复函数的源代码。
> print(someTabe.foo)
function: 0x7fed0bc091f0
这告诉您someTabe.foo 包含一个函数,该函数已转换为存储在所示地址的内部表示。
如果需要从 Lua 内部恢复某个函数的源代码,需要手动使用load 编译,然后使用调试库获取源代码。
【讨论】:
如果您只是想查看代码,可以在线查找反编译器。但是,在您自己的代码中,这是不可能的。
【讨论】:
您无法获取代码本身,但您可以使用string.dump() 获取字节码:
local f = function(x,y) print('AAA') end)
local bytecode = string.dump(f) -- Get bytecode of function
local f2 = load(f) -- It is copy of f, but (f ~= f2)
f2() -- prints AAA
【讨论】: