何时应该在corona sdk中使用本地和全局函数和变量?

时间:2012-06-27 08:42:48

标签: lua corona

如果有多个文件(main.lua)包含代码,我声明一些变量和函数全局。这些变量和函数在所有文件中是全局的,还是可以通过任何文件访问它们?如果我只使用全局变量和函数,还有什么问题吗?我正在使用导演班

4 个答案:

答案 0 :(得分:6)

根据定义,Globals并不坏,但一般情况下,只有在真正需要共享数据时才应使用它们。

否则,您最终会得到不应该交互的代码片段,但会以意想不到的方式共享变量(想想临时变量等)。

除非绝对必须共享变量,否则最好的方法是将所有内容声明为本地。

答案 1 :(得分:2)

阅读本文(Corona Labs官方推荐):

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)

结果:1​​0

希望这有帮助。

答案 2 :(得分:0)

使用Director,我认为如果你在main.lua文件中声明变量global,你可以在任何地方访问它们,但如果你在模块/场景中声明它们是全局的,那么它们在任何其他地方都无法访问。尽可能尝试使用局部变量,只有在必要时才使用全局变量。

答案 3 :(得分:-1)

如果你有多个lua文件,并且他们需要能够使用彼此的信息 - 你应该使用lua的模块系统。这就是它的设计目标。

你可以在这里阅读文档: http://www.lua.org/manual/5.1/manual.html#5.3