教程 > Lua 教程 > Lua 基础 阅读:65

Lua 变量

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

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

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

  • 全局变量 - 除非明确声明为局部变量,否则所有变量都被视为全局变量。
  • 局部变量 - 当类型被指定为变量的局部时,其范围受到其范围内的函数的限制。
  • 表字段 - 这是一种特殊类型的变量,可以保存除 nil 以外的任何内容,包括函数。

Lua 中的变量定义

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

type variable_list;

在这里,type 是可选的, 可以指定为 local 或 默认为 global,并且 variable_list 可以由一个或多个用逗号分隔的标识符名称组成。 此处显示了一些有效的声明

local i, j
local i
local a,c

local i, j 行声明和定义变量 ij; 它指示解释器创建名为** i、j** 的变量并将作用域限制为局部。

变量可以在它们的声明中被初始化(分配一个初始值)。 初始化器由一个等号后跟一个常量表达式组成,如下所示

type variable_list = value_list;

下面是一些示例

local d , f = 5 ,10 -- 将 d 和 f 声明为局部变量。
d , f = 5, 10; -- 将 d 和 f 声明为全局变量。
d, f = 10 --[[ 将 d 和 f 声明为全局变量。
这里 f 的值为 nil--]]

对于没有初始化器的定义:具有静态存储持续时间的变量用 nil 隐式初始化。


Lua 中的变量声明

正如我们在上面的示例中看到的,多个变量的赋值遵循 variable_listvalue_list 格式。 在上面的示例 local d, f = 5,10 中,我们在 variable_list 中有 df,在 valu****es 列表中有 510

Lua 中的赋值就像 variable_list 中的第一个变量和 value_list 中的第一个值一样发生,依此类推。 因此,d 的值为 5f 的值为 10

示例

试试下面的例子,变量已经在顶部声明,但它们已经在主函数中定义和初始化

-- 变量声明
local a, b

-- 初始化
a = 10
b = 30

print("value of a:", a)

print("value of b:", b)

-- 变量互换
b, a = a, b

print("value of a:", a)

print("value of b:", b)

f = 70.0/3.0
print("value of f", f)

当上面的代码构建并执行时,它结果如下

lua 变量执行结果


Lua 中的 lvalue(左值) 和 rvalue(右值)

Lua中有两种表达方式

  • lvalue(左值) - 引用内存位置的表达式称为“lvalue”表达式。 左值可能出现在赋值的左侧或右侧。
  • rvalue(右值) - 术语 rvalue 是指存储在内存中某个地址的数据值。 右值是不能赋值给它的表达式,这意味着右值可以出现在赋值的右侧,但不能出现在赋值的左侧。

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

g = 20

但以下不是一个有效的陈述,会产生一个构建时错误

10 = 20

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

g,l = 20,30

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

查看笔记

扫码一下
查看教程更方便