Lua 表中的函数

我有 someTabe = {}

someTabe.foo = function (x,y) return x + y end

我如何打印出 function"(function (x,y) return x + y end)?不返回结果。

点赞
用户107090
用户107090

你不能从Lua内部恢复一个函数的源代码。

> print(someTabe.foo)
function: 0x7fed0bc091f0

这告诉你 someTabe.foo 包含一个函数,该函数已转换为内部表示形式并存储在所示地址处。

如果你需要从Lua内部恢复函数的源代码,你需要使用 load 手动编译它,然后使用调试库获取源代码。

2018-05-08 19:15:34
用户9599769
用户9599769

如果你只是想查看代码,你可以在网上查找反编译器。但是,在你自己的代码中是不可能的。

2018-05-08 19:32:18
用户5697743
用户5697743

你无法获得代码本身,但是你可以使用 string.dump() 函数获取字节码:

local f = function(x,y) print('AAA') end)
local bytecode = string.dump(f) -- 获取函数的字节码
local f2 = load(f) -- 它是 f 的副本,但 (f ~= f2)
f2() -- 打印 AAA
2018-05-24 11:52:28