如何使用调试库与所需的 lua 文件的上值交互

how to use the debug library to interact with a required lua file's upvalues

如果我有一个 Lua 函数 f 我可以使用 debug.getupvalue 函数查看 f 闭包中的所有上值。类似地,如果我有一个文件 foo.lua,我可以通过先执行 foo = loadfile(foo) 然后使用 debug.getupvalue 来查看上值,就像查看 f 一样。如果我 require foo.lua 在那里,我可以找出关闭 foo.lua 的上值是多少?

require 加载的模块未被 require 的标准加载程序保留。仅保留执行该模块的 return 值。

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