变量在使用前,必须在代码中进行声明,即创建该变量。
编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。
a=1 --全局变量
local b=2 --局部变量
1 赋值是改变 变量的值 和改变表域最基本的方法
a=1;
tbl.n=tbl.n+12;
2 lua可以同时对多个变量赋值,变量列表和值列表分别用逗号分开,赋值语句右边的值会一次赋给左边的变量 。如果要对多个变量赋值必须依次对每个变量赋值。
a,b=1,15;
3 lua遇到赋值语句会先计算右边的 所有的值然后再进行赋值操作,所以可以这样交换变量的值
x,y=y,x --swap 'x' for 'y'
a[i],a[j]=a[j],a[i]; --swap a[i] for a[j];
4 当变量个数和值个数不一样时,会采取以下策略
变量个数 >值个数 多出的变量会赋一个nil
变量个数<值个数 多出的值会被忽略
c,d,e=12,13;
print(c,d,e); -- 输出 12,13,nil
f,g=12,12,13;
print(f,g); --12.12
5多值赋值经常用来交换变量,或将函数调用返回给变量:
a,b=func();
func 返回两个值,第一个赋给a,第二个赋给b
6 应该尽可能使用局部变量,有两个好处
(1)避免命名冲突
(2)访问局部变量比全局变量快;
7索引
对 table 的索引使用方括号 []。Lua 也提供了 针对的是字符串. 操作,。
tbl={};
tbl[1]=13;
tbl.2=14;--有语法错误,
tbl[2]=15;
tbl.f="ff";