HoRain云--Lua流程控制全解析

🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
| 专栏名称 | 专栏介绍 |
| 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 | |
| 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! | |
| 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 | |
| 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 | |
| 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 | |
| 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录

Lua 的流程控制非常简洁,但有几个独特规则(尤其是 索引从 1 开始、没有 continue、只有 false/nil 为假)。下面按实战常用度系统讲解 👇
一、条件控制(if / elseif / else)
✅ 基本语法
if condition then
-- code
elseif condition2 then
-- code
else
-- code
end
✅ 示例
score = 85
if score >= 90 then
print("A")
elseif score >= 60 then
print("B")
else
print("C")
end
⚠️ Lua 中只有 false和 nil为假
if 0 then print("true") end --> true
if nil then print("no") end --> 不执行
二、逻辑运算符(短路求值)
| 运算符 | 含义 |
|---|---|
| and | 与 |
| or | 或 |
| not | 非 |
经典技巧 ✅
x = x or 10 -- 默认值
y = a and b or c -- 三元模拟
⚠️ 真正的“三元运算符”:
result = a and b or c
(前提是 b不为 false/nil)
三、循环结构(重点)
1️⃣ while 循环
i = 1
while i <= 5 do
print(i)
i = i + 1
end
2️⃣ repeat ... until(直到型循环)
i = 1
repeat
print(i)
i = i + 1
until i > 5
✅ 至少执行一次
❌ 没有 do-while关键字
3️⃣ for 循环(最常用)
✅ 数值 for
for i = 1, 5 do
print(i)
end
带步长:
for i = 10, 1, -2 do
print(i)
end
⚠️ 循环变量是局部变量
for i = 1, 3 do end
print(i) --> nil
4️⃣ 泛型 for(遍历 table)
t = {"a", "b", "c"}
for i, v in ipairs(t) do
print(i, v)
end
user = {name="Tom", age=18}
for k, v in pairs(user) do
print(k, v)
end
| 迭代器 | 用途 |
|---|---|
| ipairs | 数组(1..n) |
| pairs | 所有键值 |
四、break / return
✅ break
for i = 1, 10 do
if i == 5 then break end
print(i)
end
✅ return
function foo()
return 1, 2
end
⚠️ Lua 没有 continue
五、模拟 continue(goto 技巧 ✅)
for i = 1, 5 do
if i == 3 then
goto continue
end
print(i)
::continue::
end
✅ Lua 5.2+ 支持 goto
六、流程控制 + 闭包(高级)
function makeCounter()
local i = 0
return function()
i = i + 1
return i
end
end
c = makeCounter()
print(c()) --> 1
print(c()) --> 2
七、常见坑 ⚠️
| 坑 | 说明 |
|---|---|
| 没有 continue | 用 if / goto |
| 索引从 1 | 不是 0 |
| 0 是真 | 只有 nil/false 为假 |
| 循环中修改表 | 不建议 |
八、一句话总结
Lua 流程控制 = if / while / repeat / for + 逻辑短路 + 无 continue
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐



所有评论(0)