目录
什么是 Lua 循环
Lua 循环是指在 Lua 语言中使用特定的语法结构重复执行一段代码,直到满足某个条件。Lua 提供了三种主要循环类型:while
、for
和 repeat-until
,以及循环控制语句 break
和 goto
。
为什么要使用循环
- 重复任务:自动化执行重复性操作。
- 数据处理:遍历表或数组中的元素。
- 效率提升:减少手动编写重复代码。
- 逻辑控制:根据条件动态调整执行流程。
Lua 循环的类型
- while 循环:条件为真时重复执行。
- for 循环:
- 数值型:按步长迭代固定范围。
- 泛型:遍历表或迭代器。
- repeat-until 循环:至少执行一次,直到条件为真时停止。
代码示例
while 循环
-- while 循环
local count = 3
while count > 0 do
print("倒计时: " .. count)
count = count - 1
end
print("结束!")
运行结果:
倒计时: 3
倒计时: 2
倒计时: 1
结束!
for 循环
数值型 for
-- 数值型 for 循环
for i = 1, 5, 2 do -- 从 1 到 5,步长 2
print("i: " .. i)
end
运行结果:
i: 1
i: 3
i: 5
泛型 for(遍历表)
-- 泛型 for 循环
local fruits = {"苹果", "香蕉", "橙子"}
for index, value in ipairs(fruits) do
print("索引: " .. index, "值: " .. value)
end
运行结果:
索引: 1 值: 苹果
索引: 2 值: 香蕉
索引: 3 值: 橙子
repeat-until 循环
-- repeat-until 循环
local num = 0
repeat
print("数字: " .. num)
num = num + 1
until num > 2
运行结果:
数字: 0
数字: 1
数字: 2
嵌套循环与控制
-- 嵌套循环与 break
for i = 1, 3 do
for j = 1, 3 do
if j == 2 then
break -- 跳出内层循环
end
print("i: " .. i, "j: " .. j)
end
end
运行结果:
i: 1 j: 1
i: 2 j: 1
i: 3 j: 1
循环控制语句
- break:立即退出当前循环。
- goto(Lua 5.2+):跳转到指定标签。
local i = 0
while true do
i = i + 1
if i > 3 then
goto done
end
print("i: " .. i)
end
::done::
print("完成")
运行结果:
i: 1
i: 2
i: 3
完成
工作原理详解
- while:每次迭代前检查条件,条件为假时退出。
- for:
- 数值型:内部维护计数器,按步长递增或递减。
- 泛型:调用迭代器函数(如
ipairs
、pairs
)逐个返回元素。 - repeat-until:先执行循环体,后检查条件。
- 控制流:
break
和goto
修改执行路径。
优点与应用场景
优点
- 多样性:三种循环适应不同需求。
- 简洁:语法直观,易于理解。
- 灵活:支持嵌套和控制语句。
应用场景
- while:不确定次数的循环(如等待输入)。
- for:遍历数组或执行固定次数任务。
- repeat-until:确保至少执行一次的场景。
常见问题与注意事项
- 死循环:
- 检查条件是否会变为假,避免无限循环。
- for 步长:
- 步长为负时,起始值需大于结束值。
- 泛型 for:
ipairs
只遍历连续数字索引,pairs
遍历所有键值对。
- 局部变量:
- 循环变量建议用
local
,提升性能。
- goto 使用:
- 谨慎使用,避免代码混乱。
参考资料与出站链接
- 官方文档:
- 学习资源:
- 工具支持:
- ZeroBrane Studio:调试循环。
如果您需要更复杂的循环示例(如嵌套表遍历),请告诉我,我会进一步扩展!
发表回复