【问题标题】:Functions in lua tableslua 表中的函数
【发布时间】:2018-10-18 19:26:45
【问题描述】:

我有 someTabe = {}

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

我怎样才能得到品脱(function"(function (x,y) return x + y end)???不返回结果。

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    您无法从 Lua 内部恢复函数的源代码。

    > print(someTabe.foo)
    function: 0x7fed0bc091f0
    

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

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

    【讨论】:

    • 谢谢。我会尝试这样做。
    【解决方案2】:

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

    【讨论】:

    • 我不能使用反编译器。这一切都是为了 MMORPG。而且我没有消息来源)
    【解决方案3】:

    您无法获取代码本身,但您可以使用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
    

    【讨论】:

    • 谢谢)我今天试试。
    • @ShannonMax 你的结果是什么?
    • 我没有做出我想要的,但朋友给了我一些好主意。现在我使用了所需的api并取得了很好的效果)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 2020-01-02
    • 2012-05-03
    • 2012-05-12
    • 2017-02-09
    • 2015-11-05
    • 2023-03-13
    相关资源
    最近更新 更多