有没有办法在 Lua 中拥有一个可以从项目中的任何模块访问的函数,而无需首先要求它?
就像是:
module(..., package.seeall);
function globFoo()
print('global foo called');
end
并从其他地方调用它,比如 main
--main
globFoo();
不需要它?
一个模块只是一个 Lua 脚本。你可以在那里做任何你想做的事;你甚至不必调用module
你的模块脚本。事实上,这些天module
通常被认为是有害的,这就是它在 Lua 5.2 中被弃用的原因。
实际上,只需移动代码即可:
function globFoo()
print('global foo called');
end
module(..., package.seeall); --Module created after global function
所以是的,你可以让一个模块修改全局表。我非常建议您不要这样做(因为它会在 Lua 脚本之间创建隐式排序,这使得很难知道哪个脚本使用了哪些东西)。但你可以做到。
这是如何完成的示例:
在 global.lua 中(全局函数所在的位置):
globalFunction1 = function(params)
print("I am globalFunction1")
end
在调用文件 caller.lua 中:
globalFunction1(params) -- This will call the global function above