获取当前 Lua 作用域中的所有函数(包括工厂函数)。

我正在寻求一种从 Lua 中获取当前作用域中已定义的所有函数的方法。有没有一种直接从 Lua 实现它的快捷方式,而不是从 C 实现?最好包括工厂函数。

点赞
用户1442917
用户1442917

你可以使用混合方法:

(1)获取所有局部变量,你可以使用 debug.getlocal 并获得变量的名称和值(例如请参考 此回答 中的逻辑)。所有函数值的 type 等于 function (即 type(value) == 'function'),因此你可以很容易地根据这个条件进行筛选。变量的名称将给出你正在寻找的名称(请记住,几个名称可能指向同一个函数)。

(2)获取所有全局变量,你可以迭代 _ENV_G 表中的字段并应用与 1 相同的筛选逻辑。

请注意,这两种方法都不能让你访问存储在表字段或通过元表间接可用的函数。

2015-07-18 23:02:35