Appearance
变量
在 Lua 中,变量是用于存储数据的容器。本章节将介绍 Lua 中变量的定义、作用域和相关操作。
变量定义
Lua 中的变量不需要声明类型,直接赋值即可:
lua
-- 全局变量
name = "Lua"
-- 局部变量
local age = 5.3变量作用域
全局变量
在 Lua 中,默认情况下,变量是全局的,即使在函数内部定义也是如此:
lua
function test()
globalVar = "全局变量"
end
test()
print(globalVar) -- 输出 全局变量局部变量
使用 local 关键字定义局部变量,局部变量只在其定义的作用域内有效:
lua
function test()
local localVar = "局部变量"
print(localVar) -- 输出 局部变量
end
test()
print(localVar) -- 输出 nil,因为 localVar 是局部变量局部变量的作用域从其定义的位置开始,到所在的代码块结束:
lua
do
local x = 10
print(x) -- 输出 10
end
print(x) -- 输出 nil变量赋值
单变量赋值
lua
local x = 10
print(x) -- 输出 10多变量赋值
Lua 支持多变量同时赋值:
lua
local a, b = 10, 20
print(a, b) -- 输出 10 20变量交换
利用多变量赋值的特性,可以方便地交换变量的值:
lua
local a, b = 10, 20
a, b = b, a
print(a, b) -- 输出 20 10函数返回多个值
函数可以返回多个值,这些值可以直接赋值给多个变量:
lua
function getMinMax(a, b, c)
local min = math.min(a, b, c)
local max = math.max(a, b, c)
return min, max
end
local min, max = getMinMax(10, 5, 15)
print(min, max) -- 输出 5 15变量删除
将变量赋值为 nil 可以删除变量:
lua
local x = 10
print(x) -- 输出 10
x = nil
print(x) -- 输出 nil变量命名规则
Lua 中的变量命名规则:
- 变量名可以包含字母、数字和下划线
- 变量名不能以数字开头
- 变量名区分大小写
- 不能使用 Lua 的保留字作为变量名
Lua 的保留字包括:
- and, break, do, else, elseif, end, false, for, function, if, in, local, nil, not, or, repeat, return, then, true, until, while
变量类型
Lua 是动态类型语言,变量的类型可以在运行时改变:
lua
local x = 10
print(type(x)) -- 输出 number
x = "Hello"
print(type(x)) -- 输出 string
x = true
print(type(x)) -- 输出 boolean
x = {}
print(type(x)) -- 输出 table全局变量表
所有全局变量都存储在一个名为 _G 的表中:
lua
name = "Lua"
print(_G.name) -- 输出 Lua
_G.age = 5.3
print(age) -- 输出 5.3环境变量
使用 setfenv 函数可以修改函数的环境变量:
lua
function test()
print(x)
end
local env = {x = 10, print = print}
setfenv(test, env)
test() -- 输出 10小结
本章节介绍了 Lua 中变量的定义、作用域、赋值、删除、命名规则和类型等内容。掌握这些内容,对于编写 Lua 程序非常重要。