4

有没有办法在 Lua 中拥有一个可以从项目中的任何模块访问的函数,而无需首先要求它?

就像是:

module(..., package.seeall);
function globFoo()
       print('global foo called');
end

并从其他地方调用它,比如 main

--main

globFoo();

不需要它?

4

2 回答 2

7

一个模块只是一个 Lua 脚本。你可以在那里做任何你想做的事;你甚至不必调用module你的模块脚本。事实上,这些天module通常被认为是有害的,这就是它在 Lua 5.2 中被弃用的原因。

实际上,只需移动代码即可:

function globFoo()
       print('global foo called');
end
module(..., package.seeall); --Module created after global function

所以是的,你可以让一个模块修改全局表。我非常建议您不要这样做(因为它会在 Lua 脚本之间创建隐式排序,这使得很难知道哪个脚本使用了哪些东西)。但你可以做到。

于 2012-08-10T18:28:21.387 回答
3

这是如何完成的示例:

在 global.lua 中(全局函数所在的位置):

globalFunction1 = function(params)
    print("I am globalFunction1")
end

在调用文件 caller.lua 中:

globalFunction1(params)    -- This will call the global function above
于 2013-07-09T03:27:22.907 回答