如何使用 debug 库与 Lua 文件的 upvalues 进行交互

如果我有一个 Lua 函数 f,我可以使用 debug.getupvalue 函数查看 f 闭包中的所有 upvalues。同样,如果我有一个文件 foo.lua,我可以通过首先执行 foo = loadfile(foo),然后以与 f 相同的方式使用 debug.getupvalue 来查看 upvalues。如果我使用 require 加载 foo.lua,是否有任何方法可以找出 foo.lua 闭包的 upvalues 是什么?

点赞
用户734069
用户734069

require 加载的模块并不会被 require 的标准加载器保留。只有该模块执行的返回值会被保留。

因此,虽然您可以检查模块导出的任何函数的任何上值,但您无法检查仅由不可访问函数访问的上值。

2017-11-13 06:18:50