Lua变量有三种类型:全局,局部,表中的域
Lua变量不加local 都是全局变量
例如:
--test.lua文件脚本
a = 5 --全局变量
local b = 5 --局部变量
function joke()
c = 5 --全局变量
local d = 6 --局部变量
end
joke()
print(c,d) --5 nil
do
local a = 6 --局部变量
b = 6 --对局部变量赋值
print(a,b) --6 6
end
print(a,b) --5 6
结果:
5 nil 6 6 5 6 [Finished in 0.1s]
赋值语句
lua可以对多个变量同时赋值,右边的值依次赋给左边的变量
例如:
a,b = 10,2*x --相当于a=10 b=2*x
可以利用多变量同时赋值的原理可以实现变量值互换
例如:
x,y = y,x --相当于把y的值赋给x,x的值赋给y
当遇到变量个数 和要赋的值不一致时,Lua会以变量个数为基础采取以下策略
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
例如:
a,b,c = 1
print(a,b,c)
a,b = a+1,a+1,a+1
print(a,b)
结果:
1 nil nil 2 2 [Finished in 0.1s]
在做这个实验室,a = 1 b,c为nil,nil类型值不能参与运算,会报错
在Lua大神的经验中,可以得出一个结论:
- 避免命名冲突,尽量使用局部变量。
- 访问局部变量的速度比全局变量更快。
索引
在table表里,可以使用 [table].[键值]来操作
比如:
> site = {}
> site["key"] = "www.toutiao.com"
> print(site["key"])
www.toutiao.com
> print(site.key)
www.toutiao.com