相信初学Cocos2Dlua者对Cocos2DLua中包含的变量都陌生的很,今天本篇教程带你深入了解Cocos2DLua中的三种变量。
写上变量的地方意味着当以其保存的值来替代之。Lua中有三类变量:全局变量,局部变量,还有table的域。
一个单一的名字可以表示一个全局变量,也可以表示一个局部变量(或者是一个函数的参数,这是一种特殊形式的局部变量):
任何变量都被假定为全局变量,除非显式的以local修饰定义。局部变量有其作用范围:局部变量可以被定义在它作用范围中的函数自由使用。
在变量的首次赋值之前,变量的值均为nil。
方括号被用来对table作索引:
对全局变量以及table域之访问的含义可以通过metatable来改变。以取一个变量下标指向的量t[i]等价于调用gettable_event(t,i)。(这个函数并没有在lua中定义出来,也不能在lua中调用。这里我们把它列出来只是方便说明。)
var.Name这种语法只是一个语法糖,用来表示var["Name"]:
所有的全局变量都是放在一个特定luatable的诸个域中,这个特定的table叫作environment(环境)table或者简称为环境(参见§2.9)。每个函数都有对一个环境的引用,所以一个函数中可见的所有全局变量都放在这个函数所引用的环境表(environmenttable)中。当一个函数被创建出来,它会从创建它的函数中继承其环境,你可以调用getfenv取得其环境。如果想改变环境,可以调用setfenv。(对于C函数,你只能通过debug库来改变其环境)。
对一个全局变量x的访问等价于_env.x,而这又可以等价于
这里,_env是当前运行的函数的环境。(这个函数并没有在lua中定义出来,也不能调用。当然,_env这个变量也同样没有在Lua中定义出来。我们在这里使用它们,仅仅只是方便解释而已。)