📅  最后修改于: 2020-10-16 05:14:29             🧑  作者: Mango
变量不过是我们程序可以操作的存储区域的名称。它可以保存不同类型的值,包括函数和表。
变量的名称可以由字母,数字和下划线字符。它必须以字母或下划线开头。由于Lua区分大小写,因此大写和小写字母是不同的。 Lua中有八种基本类型的值-
在Lua中,虽然我们没有变量数据类型,但是根据变量的范围,我们有三种类型。
全局变量-所有变量均视为全局变量,除非明确声明为局部变量。
局部变量-当将类型指定为变量的局部类型时,其范围受其范围内的函数限制。
表字段-这是一种特殊的变量类型,可以保存除nil以外的任何变量,包括函数。
变量定义意味着告诉解释器在何处以及为变量创建多少存储空间。变量定义具有可选类型,并包含一个或多个该类型变量的列表,如下所示:
type variable_list;
在这里, type是可选的局部类型或指定为全局的类型, variable_list可以包含一个或多个用逗号分隔的标识符名称。一些有效的声明显示在这里-
local i, j
local i
local a,c
本地i,j行都声明并定义了变量i和j;它指示解释器创建名为i,j的变量,并将范围限制为局部。
变量可以在其声明中进行初始化(分配初始值)。初始化程序由一个等号和一个常量表达式组成,如下所示:
type variable_list = value_list;
一些例子是-
local d , f = 5 ,10 --declaration of d and f as local variables.
d , f = 5, 10; --declaration of d and f as global variables.
d, f = 10 --[[declaration of d and f as global variables.
Here value of f is nil --]]
对于没有初始化程序的定义:具有静态存储持续时间的变量使用nil隐式初始化。
如您在上面的示例中看到的,多个变量的赋值遵循variable_list和value_list格式。在上面的示例中,局部d,f = 5,10 ,在variable_list中具有d和f,在值列表中具有5和10。
Lua中的值分配就像在variable_list中的第一个变量与value_list中的第一个值一样进行,依此类推。因此,d的值为5,f的值为10。
请尝试以下示例,其中变量已在顶部声明,但已在主函数定义并初始化了它们-
-- Variable definition:
local a, b
-- Initialization
a = 10
b = 30
print("value of a:", a)
print("value of b:", b)
-- Swapping of variables
b, a = a, b
print("value of a:", a)
print("value of b:", b)
f = 70.0/3.0
print("value of f", f)
构建并执行上述代码后,将产生以下结果-
value of a: 10
value of b: 30
value of a: 30
value of b: 10
value of f 23.333333333333
Lua中有两种表达方式-
lvalue-引用内存位置的表达式称为“ lvalue”表达式。左值可能显示为分配的左侧或右侧。
rvalue-术语“右值”是指存储在内存中某个地址处的数据值。右值是不能为其分配值的表达式,这意味着右值可能出现在赋值的右侧,但不能出现在赋值的左侧。
变量是左值,因此可能出现在赋值的左侧。数字字面量是右值,因此可能没有赋值并且不能出现在左侧。以下是有效的声明-
g = 20
但是以下不是有效的语句,并且会生成构建时错误-
10 = 20
在Lua编程语言中,除了上述分配类型外,在同一条语句中可能有多个左值和右值。如下所示。
g,l = 20,30
在上面的语句中,将20分配给g,将30分配给l。