帮助:模块/变量
来自心百科,心灵的百科全书
模块 <
Lua的变量共有三种类型:全局变量、局部变量、表(table
)中的索引。
- 全局变量:在整个模块中都有效的变量
- 局部变量:只在声明的语句块(函数、
for
等)中生效的变量 - 表中索引:是需要根据
table
和索引名,来确定到一个变量
命名规范
Lua的变量名,可以使用字母(区分大小写)、下划线和数字组成变量名。
特殊限制:
- 数字不能作为变量名开头
- 下划线后面不能接一个或多个大写单词
- 不能使用保留的关键字:
and
、break
、do
、else
、elseif
、end
、false
、goto
、for
、function
、if
、in
、local
、nil
、not
、or
、repeat
、return
、then
、true
、until
和while
声明
Lua的变量可以不声明直接使用,但所有未经声明的变量均为全局变量,很容易产生不必要的错误,所以不推荐这样的使用方式。
除非您确定要使用全局变量,否则应该尽量把变量声明为局部变量,声明局部变量的方式:
local varname
赋值
赋值,可以改变一个变量的值,赋值时使用运算符=
所有没有赋值的变量,直接使用时,值均为nil
例如:
a = 'hello huiji' b = 50 + 5
可以同时赋值多个变量,如下:
a, b = 'hello huiji', 50 + 5
Lua会先计算=
右边的值,然后再进行赋值操作,因此可以使用同时赋值功能来交换2个变量的值:
a, b = b, a
当变量的个数和值的个数不一致时:
- 变量的个数比较多的情况下,多出来的变量,会被赋值为
nil
- 值的个数比较多的情况下,多余的值会被忽略
同时赋值多个变量,主要用于函数返回值:
a, b = f() -- f()返回两个变量
声明的时候也可以进行赋值,如下:
local varname = '灰机'
还可以同时声明多个变量,并进行赋值,例如:
local varname, vardesc = '灰机', '一个中文「维基农场」'
表中索引
Lua中,使用table
的表中的变量时,可以使用以下两种方式索引:
- 使用方括号
[ ]
t[i] -- 表t中的i t[1] -- 表t中的第1个元素 t['1'] -- 表t中key的值为“1”的元素 t["1"] -- 同上,表t中key的值为“1”的元素
- 使用点
.
t.i -- 仅限于索引值是一个字母开头的字符串(且不包括中文)