2012-06-27 15 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

希望这有助于。