Lua - 变量


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

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

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

  • 全局变量- 除非明确声明为局部变量,否则所有变量都被视为全局变量。

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

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

Lua中的变量定义

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

type variable_list;

这里,类型可选是本地的或指定的类型使其成为全局的,并且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中,我们在变量列表中有 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中有两种表达方式:

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

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

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

g = 20

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

10 = 20

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

g,l = 20,30

在上面的语句中,20 被赋值给 g,30 被赋值给 l。