我试图通过在代码末尾要求第二个来覆盖第一个 .lua 文件中的变量。
文件1.lua
val = 1
require "file2"
文件2.lua
val = 2
不幸的是,这似乎不起作用,因为此后 val 仍然是 1。我想出的解决方案是一个新函数,允许这些文件的潜在未来用户包含文件,我现在在初始化 Lua 时插入该函数:
function include(file)
dofile("path/since_dofile_doesnt_seem_to_use/package/path" .. file .. ".lua")
end
这完全符合预期,但由于我对 Lua 还很陌生,我想知道是否有更好的解决方案。也许已经内置了一些东西?
Update:
我的问题是,我不小心在多个文件上多次需要 file2,而 Lua 不会再次加载它来更改值。解决了。
Lua 会跟踪你拥有的所有文件require
d 在你的代码中的一个名为的表中package.loaded
。每次有一个文件require
d、检查该表,如果该模块名称已存在于该表中,则不加载它。如果表中不存在,则加载模块并将名称添加到表中。这样你就可以require
一个模块多次运行,但只会第一次运行。
您可以通过设置来解决这个问题package.loaded[packagename] = nil
after require
荷兰国际集团的包。这样,当lua检查表中是否存在包名时,它就不会找到它,所以你可以根据需要多次require它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)