2012-08-10 144 views
2

有没有办法让Lua中的某个函数可以从项目中的任何模块访问而无需首先需要它?lua中的全局函数

类似:

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

,并从其他somwhere叫,像主

--main 

globFoo(); 

,而不需要它?

+3

为什么你会这么想? – delnan 2012-08-10 18:26:49

+1

因此,我可以在我的项目中的任何地方都可以访问某些功能,而不必经过(不管它是否温和)需要它的不便。 – ZachLHelms 2012-08-10 18:30:54

回答

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脚本之间创建隐式排序,这使得很难知道哪个脚本使用哪些内容)。但你可以做到。

0

的如何做到这一点的例子:

在global.lua

(其中全局函数所在):

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

在调用文件,caller.lua:

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