我可以使用lua库中是否有可能与debug.getupvalues / debug.getupvalue类似的功能,因为我将很快无法使用,因此我会稍微依赖它们我正在使用的部分代码。
如果我可以获取debug.getupvalue的函数代码,那将是一个很大的帮助,因为我可以将其用作函数,而不再使用调试库,尽管我怀疑它是Lua中的代码。
在您说出来之前,是的,我知道调试库是所有Lua中最不依赖的库,但是它使我的代码正常工作,我想找到一种在太晚之前停止使用它的方法。
答案 0 :(得分:0)
debug
库并不打算在生产代码中使用(与测试和异常调试情况相对)。有3种可能的解决方案。其中两个需要更改定义闭包的代码。另一个要求您知道C:
在与upvalue相同的作用域中添加更多闭包,这些闭包将为您提供所需的访问权限。
使用表代替闭包。
编写一个使用lua_getupvalue
的C库。
要查看debug.getupvalue
的源代码,请下载Lua 5.3.5并查看src/ldblib.c
,第260行。lua_getupvalue
在src/lapi.c
,第1222行。 / p>