Lua支持的常规语句包括:赋值、控制结构和过程调用。另外还支持诸如:多重赋值和局部变量声明等不太常见的语句。函数
赋值测试
赋值的基本含义是修改一个变量或一个table中字段的值;Lua容许“多重赋值”,也就是一会儿将多个值赋予多个变量。每一个值或每一个变量之间以逗号分隔。lua
a , b = 10, 2*x 赋值后,变量a为10,b为2*x
在多重赋值中,Lua先对等号右边的全部元素求值,而后才执行赋值。Lua老是会将等号右边值的个数调整到与左边变量的个数相一致。规则是:若值的个数少于变量的个数,那么多余的变量会被赋予nil;若值的个数更多的话,那么多余的值会被“静悄悄地”丢弃。spa
局部变量和块命令行
相对于全局变量,Lua还提供了局部变量;经过local语句来建立局部变量。code
j = 10 -- 全局变量 local i = 1 --局部变量
与全局变量不一样的是,局部变量的做用域仅限于声明他们的那个块。一个块是一个控制结构的执行体或或者是一个函数的执行体或者是一个程序块。作用域
x = 10 local i = 1 --程序块中的局部变量 while i <= x do local x = i*2 --while循环体中的局部变量 print(x) -->2,4,6,8... end if i > 20 then local x --->then中的局部变量 x = 20 print(x + 2) -->若是测试成功会打印22 else print(x) --->10(全局变量) [这里若是else语句里有个local x,则此时print(x)打印的就是else语句里定义的x,若是还有个变量x = 555,则此时else里和整个if语句外面的print打印的都是555 总结:若是一个块里有个local变量,则会优先使用这个local变量,若是没有,就从外面的全局变量里查找,若是定义多个同名的全局变量,print会使用离他最近的一个变量值。] end print(x) --->10(全局变量)
为了明确Lua中做用域的概念,能够显示地界定一个块,只须要将这些内容放入一对关键字do-end中便可。在命令行中每当输入do时,Lua就不会单独地执行后面的每行内容,而是直至遇到一个相应的end时,才会执行整个块的内容。table
尽量地使用局部变量,能够避免将一些无用的名称引入全局变量,避免搞乱整个全局环境。此外,访问局部变量比访问全局变量更快。最后一个局部变量一般会随着其做用域的结束而消失,这样便使垃圾收集器能够释放其值。class
Lua将局部变量的声明当作语句来处理,所以能够在任何容许书写语句的地方书写局部变量的声明。所声明的局部变量的做用域从声明语句开始,直至所在块的结尾。声明语句中还能够包含初始化赋值。若是一条声明语句没有初始化赋值,那么它声明的全部变量都会初始化为nil。变量