条件语句根据条件的真(true)假(false)来控制程序的执行流程。
Lua 的 if 条件语句语法结构如下:
if 条件1 then
代码块1
elseif 条件2 then
代码块2
-- ...
elseif 条件n then
代码块n
else
代码块n+1
end
如果“条件1”为 true 则执行“代码块1”
否则,如果“条件2”为 true 则执行“代码块2”
...
如果“条件n”为 true 则执行“代码块n”
否则,执行“代码块n+1”
graph TD
START([开始]) --> COND1{条件1?} -- 真 --> 代码块1 --> END([结束])
COND1 -- 否 --> COND2{条件2?} -- 真 --> 代码块2 --> END([结束])
COND2 -- 否 --> CONDn{条件n?} -- 真 --> BLOCKn["代码块 n"] --> END([结束])
CONDn -- 否 --> ELSE_BLOCK["代码块 n+1"] --> END([结束])
Lua 支持以下比较运算符:
==: 等于
~=: 不等于
<: 小于
>: 大于
<=: 小于等于
>=: 大于等于
这些操作的结果是 boolean 类型:值要么是 true,要么是 false。
示例:
SUNNY = 1 -- 晴天
RAINY = 2 -- 雨天
local weather = SUNNY
if weather == SUNNY then -- 如果是晴天
print("出门记得戴太阳镜")
elseif weather == RAINY then -- 否则,如果是雨天
print("出门记得带上雨伞")
end
运行结果:
出门记得戴太阳镜
作用域是指程序中定义的变量(或其他标识)符的可见性和生命周期范围,决定了变量(或其他标识)可以在哪些位置被使用。局部变量的作用域为其所在的代码块(例如 if 代码块)。
示例:
local x = 10 -- 作用域是当前文件
if true then
local y = 20 -- 作用域是当前 if 代码块
end
if false then
local y = 30 -- 作用域是当前 if 代码块,与前一个 if 中的 y 毫无关系
elseif true then
local z = 40 -- 作用域是当前 elseif 代码块
else
m = 30 -- 全局变量,作用域是全局
end
Lua 的条件语句、循环语句、函数以及 do ... end 块都是独立的代码块(作用域)。
Lua 的 do ... end 代码块可用创建独立的作用域,常用于限制局部变量的可用范围。
do
-- 代码块
end
示例:
do
local x = 10
print("代码块内部 x = ", x)
end
print("代码块外部 x = ", x)
运行结果:
代码块内部 x = 10
代码块外部 x = nil