lua的全局功能

时间:2012-08-10 18:23:00

标签: function lua global

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

类似的东西:

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

并从其他地方调用,如主

--main

globFoo();

不需要它?

2 个答案:

答案 0 :(得分:5)

模块只是一个Lua脚本。你可以做任何你想做的事;您甚至不必在模块脚本中调用module。实际上,modulegenerally considered harmful these days,这就是它在Lua 5.2中被弃用的原因。

真的,这只是简单地移动你的代码:

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

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

答案 1 :(得分:0)

如何做到这一点的示例:

global.lua中的

(全局函数所在的位置):

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

在调用文件中,调用者.lua:

globalFunction1(params)    -- This will call the global function above