为什么Lua package.loaded不能缓存模块返回的全局表?

时间:2017-02-01 14:15:52

标签: lua zerobrane

来自Lua 5.1参考手册:

  

找到加载程序后,需要使用单个程序调用加载程序   参数,modname。如果加载器返回任何值,则需要分配   返回值为package.loaded [modname]。如果加载器返回   没有值,也没有为package.loaded [modname]赋值,   然后要求为此条目指定true。无论如何,要求退货   package.loaded [modname]

的最终值

在我看来,当你使用require和success时,它会测量,package.loaded[modname]必须有值,无论是true还是依赖于loader函数的表都有返回

所以下面有我的测试

enter image description here

我的package.loaded["test"]在哪里?但是当我在test.lua中更改一行时

enter image description here

这是我的Lua interperter:

ZeroBraneStudioEduPack-1.40-win32 / Project / Lua Interperter / Lua

抱歉,我的英语不好

P.S。
上面的屏幕截图以全分辨率提供:12

1 个答案:

答案 0 :(得分:1)

ZeroBrane Studio限制在“监视”面板中检索和显示的内容的大小(由多个debugger.* settings控制)。在您的情况下,引用_G会返回一个大的有效负载,它会推出其他一些内容(它恰好会推出不同的内容,因为全局变量已经列在_G中,这就是为什么你会看到不同的结果)。

尝试在脚本package.loaded._G = nil中添加以下内容作为第二行,您应该看到更多元素显示,结果在两种情况之间保持一致。