首页 > 解决方案 > Lua - Lua 库中是否有与 debug.getupvalues / debug.getupvalue 相同或相似的不同函数?

问题描述

是否有可能或者在我可以使用的 lua 库中是否有类似于 debug.getupvalues / debug.getupvalue 的函数,因为我将无法很快使用,我稍微依赖它们来保留部分我有工作的代码。

此外,如果我可以获得 debug.getupvalue 的函数代码,那将是一个很大的帮助,因为我可以将它用作函数而不是再使用调试库,尽管我怀疑它是 Lua 中的代码。

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

标签: debugginglua

解决方案


debug库不适用于生产代码(与测试和异常调试情况相反)。有 3 种可能的解决方案。其中两个需要更改定义闭包的代码。另一个要求你知道 C:

  1. 在与 upvalues 相同的范围内添加更多闭包,这将为您提供所需的访问权限。

  2. 使用表而不是闭包。

  3. 编写一个使用lua_getupvalue.

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


推荐阅读