lua语法-变量(全局变量与局部变量)
全局变量:直接定义变量名,并赋值
例如,a = 1;
注:用;结束当前语句(可选,也可以不使用分号)
局部变量:使用local
关键字进行定义
例如,local b = 2;
变量命名规则
- 遵循C/C++语言中的变量命名规则
避免定义下划线开头并立即跟着大写字母的变量名
- lua关键字不能用作变量名
例如,以下变量定义语句合法:
s = "lua";
i = 1;
\_float\_ = 0.01
PI = 3.14
复制代码
例如,以下变量定义语句不合法:
if = "err";
_Err = 0.1;
标识符= 1;
\_PI\_ = 3.14
复制代码
lua中的变量使用:
- 可以在一行定义多个变量,尽量在定义变量时赋值
注:可以使用一个 = 对多个变量进行赋值,赋值采用一一对应原则,如果变量和值不是一一对应,则未赋值的变量默认值为nil
- 定义变量时
不需要声明类型
,变量仅具有动态类型,不具有静态类型 未赋值的变量,其值默认为nil(空值)
例如,
a = 1
b,c = "2"
d = 3,4
复制代码
以上程序执行完之后,变量的值分别是:
a = 1 b = 2 c = nil d = 3
变量使用的注意事项
- 定义变量时不需要声明类型
- 局部变量的作用于仅限于块中(if,else,while,do,function)
- 在lua中尽可能使用局部变量(访问速度更快)
- 当不再使用全局变量的时候,用nil进行赋值
变量定义实例程序:
a,b = 1,2,3;
str = "global";
do
local x,y = a,b;
local str = str;
--局部变量str的值由全局变量str(global)进行传递
print("str = ",str);
--将str局部变量进行重新赋值,str局部变量的值变为local
str = "local";
print("str = ",str);
print("x = ",x);
print("y = ",y);
print("a = ",a);
print("b = ",b);
end
print("---------------------\n");
print("str = ",str);
--以下输出语句均针对全局变量
print("x = ",x);
print("y = ",y);
print("a = ",a);
print("b = ",b);
a,b,str = nil;
复制代码
以上程序执行之后的输出结果为:
str = global
str = local
x = 1
y = 2
a = 1
b = 2
---------------------
str = global
x = nil
y = nil
a = 1
b = 2
分析:
- do......end之间定义的变量均为局部变量
- 当end执行后,所有局部变量生命周期结束;故在end之后,输出x和y均为未赋值的变量,变量值均为nil。