📜  Lua-变量

📅  最后修改于: 2020-10-16 05:14:29             🧑  作者: Mango


变量不过是我们程序可以操作的存储区域的名称。它可以保存不同类型的值,包括函数和表。

变量的名称可以由字母,数字和下划线字符。它必须以字母或下划线开头。由于Lua区分大小写,因此大写和小写字母是不同的。 Lua中有八种基本类型的值-

在Lua中,虽然我们没有变量数据类型,但是根据变量的范围,我们有三种类型。

  • 全局变量-所有变量均视为全局变量,除非明确声明为局部变量。

  • 局部变量-当将类型指定为变量的局部类型时,其范围受其范围内的函数限制。

  • 表字段-这是一种特殊的变量类型,可以保存除nil以外的任何变量,包括函数。

Lua中的变量定义

变量定义意味着告诉解释器在何处以及为变量创建多少存储空间。变量定义具有可选类型,并包含一个或多个该类型变量的列表,如下所示:

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隐式初始化。

Lua中的变量声明

如您在上面的示例中看到的,多个变量的赋值遵循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中的左值和右值

Lua中有两种表达方式-

  • lvalue-引用内存位置的表达式称为“ lvalue”表达式。左值可能显示为分配的左侧或右侧。

  • rvalue-术语“右值”是指存储在内存中某个地址处的数据值。右值是不能为其分配值的表达式,这意味着右值可能出现在赋值的右侧,但不能出现在赋值的左侧。

变量是左值,因此可能出现在赋值的左侧。数字字面量是右值,因此可能没有赋值并且不能出现在左侧。以下是有效的声明-

g = 20

但是以下不是有效的语句,并且会生成构建时错误-

10 = 20

在Lua编程语言中,除了上述分配类型外,在同一条语句中可能有多个左值和右值。如下所示。

g,l = 20,30

在上面的语句中,将20分配给g,将30分配给l。