2012-08-10 146 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