毁三观的变量定义
变量定义变量定义告诉解释器为变量创建存储的位置和数量。 变量定义具有可选类型,并包含该类型的一个或多个变量的列表,如下所示 -
type variable_list;
这里,type是可选的本地或全局类型,而variable_list可以包含一个或多个由逗号分隔的标识符名称。 这里显示了一些有效的声明 -
local i, j
local i
local a,c
行local 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隐式初始化。
Lua变量声明正如在上面的示例中所看到的,多个变量的赋值遵循variable_list和value_list格式。 在上面的例子中,local d , f = 5 ,10在variable_list中
就是d和f,在value_list中就是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中有两种表达方式 -
左值 - 引用内存位置的表达式称为“左值”表达式。 左值可以显示为赋值的左侧或右侧。右值 - 术语右值是指存储在内存中某个地址的数据值。 右值是一个不
能赋值的表达式,所以右值可能出现在右侧,但不会出现在赋值的左侧。
变量是左值,因此可能出现在赋值的左侧。 数字文字是右值,因此可能无法分配,也不能出现在左侧。 以下是有效的声明 -
g = 20
但是以下不是有效的语句,会产生构建时错误 -
10 = 20
在Lua编程语言中,除了上述类型的赋值之外,在同一个语句中可以有多个左值和右值。 如下所示。
g,l = 20,30
在上面的语句中,20分配给变量g,30分配给变量l。