Lua - Lua库中有类似于debug.getupvalues / debug.getupvalue的不同函数吗?

我是否可以使用类似于debug.getupvalues / debug.getupvalue的 Lua 库函数来取代它们,因为我很快就不能使用它们了,而我有点依赖它们来保持代码的运行。

此外,如果我可以获取debug.getupvalue的函数代码,那将是个大帮助,因为我可以把它作为一个函数来使用,而不是再使用debug库,虽然我怀疑它不是Lua代码。

在你说出来之前,是的我知道debug库是所有Lua库中最不可靠的库,但它使我的代码工作了,我想找到一个停止使用它的方法,而不是在为时已晚之前。

点赞
用户3574628
用户3574628

debug库不应该在生产代码中使用(与测试和异常调试情况相反)。有三种可能的解决方案。其中两种需要对定义闭包的代码进行更改。另一种需要您了解C语言:

  1. 在与upvalues相同作用域中添加更多闭包,以便获得所需的访问权限。

  2. 使用表格而不是闭包。

  3. 编写一个C库,利用lua_getupvalue

要查看debug.getupvalue的源代码,请下载Lua 5.3.5,并查看src/ldblib.c,第260行。 lua_getupvaluesrc/lapi.c,第1222行。

2018-08-01 16:42:00