国际访客建议访问 Primers 编程伙伴 国际版站点 > Lua 教程 > if 条件语句 以获得更好的体验。

# Lua 的 if 条件语句

条件语句根据条件的真(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 块都是独立的代码块(作用域)。

# do ... end 代码块

Lua 的 do ... end 代码块可用创建独立的作用域,常用于限制局部变量的可用范围。

do
    -- 代码块
end

示例:

do
    local x = 10
    print("代码块内部 x = ", x)
end

print("代码块外部 x = ", x)

运行结果:

代码块内部 x =  10
代码块外部 x =  nil
本文 更新于: 2025-11-27 09:38:12 创建于: 2025-11-27 09:38:12