如何使用调试库与所需的 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 值。
因此,虽然您可以检查模块导出的任何函数的任何上值,但您不能检查仅由不可访问函数访问的上值。
如果我有一个 Lua 函数 f
我可以使用 debug.getupvalue
函数查看 f
闭包中的所有上值。类似地,如果我有一个文件 foo.lua
,我可以通过先执行 foo = loadfile(foo)
然后使用 debug.getupvalue
来查看上值,就像查看 f
一样。如果我 require
foo.lua
在那里,我可以找出关闭 foo.lua
的上值是多少?
require
加载的模块未被 require
的标准加载程序保留。仅保留执行该模块的 return 值。
因此,虽然您可以检查模块导出的任何函数的任何上值,但您不能检查仅由不可访问函数访问的上值。