在Lua中可以自省函数吗?

问题描述 投票:1回答:1

我正在用love2d(LuaJIT)创建游戏,并且正在创建调试窗口以在运行时更改值。我能够做到这一点,但是,我现在也希望能够调用函数。例如,我遍历一个表,该表中有一个名为“ hello”的函数,其编写方式如下:

self.hello = function(str, num)
    print(string.format("%s: %d", str, num))
end

type(object.hello)的表达式中,我只看到function。如果它是一个表,我可以遍历它并查看键和值,但是它只是一个“函数”,而且我不知道如何正确调用它,因为我不知道它需要什么参数,多少。有没有办法在lua的运行时找到这个?也许此信息也存储在其他地方的某个表中?

lua introspection luajit
1个回答
1
投票

它只是一个“函数”,我不知道如何正确调用它

Lua也没有。就Lua而言,任何Lua函数都可以采用任意数量的参数并返回任意数量的参数。这些参数可以是任何类型,其返回值也可以。

Lua本身不存储此信息。或者至少,如果不对字节码进行一些反编译,就无法以任何方式检索它。并且由于您使用的是LuaJIT,因此“反编译”可能需要反编译assembly

© www.soinside.com 2019 - 2024. All rights reserved.