2012-06-27 16 views
1

如果有多個包含代碼的文件(main.lua),並且我聲明瞭全局變量和函數。這些變量和函數在所有文件中是全局還是可以通過任何文件訪問它們?如果我僅使用全局變量和函數,那麼是否存在任何問題?我正在使用導演類當在corona sdk中使用局部和全局函數和變量時?

回答

6

全局定義並不差,但一般而言,只有在您真的需要共享數據時才應使用它們。否則,你會得到一些不應該交互的代碼片段,但是會以一種意想不到的方式共享一個變量(想象一下臨時變量等等)。

最好的方法是聲明一切本地,除非你絕對必須共享變量。

-1

如果你有多個lua文件,他們需要能夠使用另一個的信息 - 你應該使用lua的模塊系統。這是它的設計目的。

,你可以在這裏閱讀的文檔:使用Director http://www.lua.org/manual/5.1/manual.html#5.3

+1

模塊系統有幾個缺陷 - 請參閱http://lua-users.org/wiki/LuaModuleFunctionCritiqued。另請注意,lua 5.2中已經不推薦使用'module'函數。 – kikito

0

,我覺得如果你聲明變量在main.lua文件全局的,你可以在任何地方訪問它們,但如果你把它們聲明全局模塊中的/他們無法在任何其他地方訪問它們。嘗試儘可能使用局部變量,只有在需要使用它們時才使用全局變量。

2

閱讀本(官方科羅納實驗室的建議):

http://www.coronalabs.com/blog/2013/05/28/tutorial-goodbye-globals/

基本上,他們建議:

  • 不要使用全局變量

  • 如果你想訪問模塊之間的變量,請執行以下操作

創建一個新模塊來存儲「跨模塊」變量。

mydata.lua

--my global space 
local M = {} 
return M 

使用其他模塊內的模塊:

main.lua

local myData = require("mydata") 
myData.myVariable = 10 
director:changeScene("other") 

other.lua

local myData = require("mydata") 
print(myData.myVariable) 

結果:10

希望這有助於。