Lua变量

变量在使用前,需要在代码中进行声明,即创建该变量
Lua 变量有三种类型:全局变量、局部变量、表中的域
在变量首次赋值之前,变量的值均为 nil

一、赋值

赋值是改变一个变量的值和改变表域的最基本的方法

1.Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量

如:a,b=10,9          相当于a=10;b=9

2.遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值

如:x,y=y,x           即交换x,y的值

3.当变量个数和值的个数不一致时,Lua会以变量个数为基础采取相应的策略
左边变量个数>右边值的个数 会按照变量个数补足nil

a, b, c = 0, 1
print(a,b,c)

输出结果:

0     1     nil

左边变量个数<右边值的个数 多余的值会被忽略

a, b = 1, 2, 3     
print(a,b)

输出结果:

1     2

注:如果要对多个变量赋值必须依次对每个变量赋值
4.多赋值经常用来交换变量,或将函数调用返回给变量

a,b=f()

f()返回两个值,第一个赋给a,第二个赋给b

二、全局变量

全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是nil
注:
1.如果你想删除一个全局变量,只需要将变量赋值为nil
2.当且仅当一个变量不等于nil时,这个变量才存在

三、局部变量

局部变量是有其作用范围的,局部变量可以被定义在它作用范围中的函数自由使用,局部变量可以在语句块中任何地方声明。
使用局部变量优势:
1.可以避免命名冲突
2.访问局部变量的速度比全局变量快

a = 5                           -- 全局变量
local b = 5                     -- 局部变量

function joke()
c = 5                           -- 全局变量
local d = 6                     -- 局部变量
end
joke()
print(c,d)           
do
local  a = 6                    -- 局部变量
b = 6                           -- 对局部变量重新赋值
print(a,b);     
end
print(a,b)

输出结果:

5    nil
6     6
5     6