- Lua 教程
- Lua - 首页
- Lua 基础
- Lua - 概述
- Lua - 环境
- Lua - 基本语法
- Lua - 注释
- Lua - 打印 Hello World
- Lua - 变量
- Lua - 数据类型
- Lua - 运算符
- Lua - 循环
- Lua - 决策
- Lua - 函数
- Lua - 日期和时间
- Lua 数组
- Lua - 数组
- Lua - 多维数组
- Lua - 数组长度
- Lua - 迭代数组
- Lua 迭代器
- Lua - 迭代器
- Lua 列表
- Lua - 在列表中搜索
- Lua 模块
- Lua - 模块
- Lua - 命名空间
- Lua 元表
- Lua - 元表
- Lua 协程
- Lua - 协程
- Lua 文件处理
- Lua - 文件I/O
- Lua 库
- Lua - 标准库
- Lua - 数学库
- Lua - 操作系统功能
- Lua 有用资源
- Lua - 快速指南
- Lua - 有用资源
- Lua - 讨论
Lua - 变量
变量只不过是我们程序可以操作的存储区域的名称。它可以保存不同类型的值,包括函数和表。
变量名可以由字母、数字和下划线组成。它必须以字母或下划线开头。由于 Lua 区分大小写,因此大写字母和小写字母是不同的。Lua 中有八种基本类型的值:
在 Lua 中,虽然我们没有变量数据类型,但根据变量的作用域,我们有三种类型。
全局变量 - 除非明确声明为局部变量,否则所有变量都被视为全局变量。
局部变量 - 当变量的类型指定为局部变量时,其作用域仅限于其作用域内的函数。
表字段 - 这是一种特殊的变量类型,可以保存任何东西,除了 nil,包括函数。
Lua 中的变量定义
变量定义意味着告诉解释器在哪里以及如何创建变量的存储空间。变量定义可以选择类型,并包含一个或多个该类型的变量列表,如下所示:
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 中,我们有 d 和 f 在 variable_list 中,5 和 10 在 values list 中。
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) - 指向内存位置的表达式称为“左值”表达式。左值可以出现在赋值的左侧或右侧。
右值 (rvalue) - 右值指的是存储在内存某个地址的数据值。右值是一个不能赋值的表达式,这意味着右值可以出现在右侧,但不能出现在赋值的左侧。
变量是左值,因此可以出现在赋值的左侧。数值文字是右值,因此不能赋值,也不能出现在左侧。以下是一个有效的语句:
g = 20
但以下语句无效,会生成构建时错误:
10 = 20
在 Lua 编程语言中,除了上述类型的赋值外,还可以在同一个语句中包含多个左值和右值。如下所示。
g,l = 20,30
在上述语句中,20 赋值给 g,30 赋值给 l。
示例 - 声明和初始化变量
尝试以下示例,其中变量已在顶部声明,但在主函数内定义和初始化:
-- Variable definition: a, b = 10, 30 print("value of a:", a) print("value of b:", b)
当编译并执行上述代码时,会产生以下结果:
value of a: 10 value of b: 30