Skip to content

Lua 循环

循环是编程中用于重复执行代码块的基本控制结构。Lua 提供了几种类型的循环来处理不同的迭代需求。

概念上,循环涉及一个条件和一个循环体。只要(或直到)条件满足特定标准,循环体就会被执行。大多数循环还包含一种机制,使得条件最终变为假,以避免无限执行,除非是故意设计的无限循环。

Lua 编程语言提供以下几种类型的循环:

循环类型描述
while 循环只要给定的条件为真,就重复执行一个语句或语句组。条件在执行循环体之前测试。
for 循环 (数值型)按照算术 progression 迭代控制变量,执行一系列语句特定次数。
for 循环 (泛型)使用迭代器函数(例如 pairs、ipairs),为集合中的每个元素执行一系列语句。
repeat…until 循环重复执行一个语句或语句组,直到给定的条件变为真。条件在执行循环体之后测试,这意味着循环体总是至少执行一次。
嵌套循环你可以在另一个 while、for 或 repeat...until 循环内部使用一个或多个循环。

循环控制语句改变循环内部的正常执行流程。Lua 提供了 break 语句。

控制语句描述
break 语句终止其所在的 innermost 循环(while、for 或 repeat...until),并将执行转移到该循环之后的下一条语句。

Lua 没有内置的 continue 语句。然而,这种行为通常可以使用 if 条件来模拟,或者在 Lua 5.2+ 中使用 goto(尽管 goto 应谨慎使用)。

如果循环的条件永远不会变为假(对于 while 和没有自然结束的 for)或永远不会变为真(对于 repeat...until),则该循环将成为无限循环。while true do 构造通常用于故意的无限循环,常见于服务器应用程序或游戏主循环中。通常使用 break 语句在满足特定条件时退出此类循环。

while true do
print("This loop will run until explicitly broken.")
-- some_condition 最终会变为 true 来触发 break
-- if some_condition then
-- break
-- end
-- 在这个例子中,我们将立即 break 让它只打印一次
break -- 移除此行以获得真正的无限循环(使用 Ctrl+C 停止)
end
print("Loop finished.")

**实际应用:**带有 break 的无限循环在事件驱动编程中很常见,例如等待用户输入或网络请求。例如,一个简单的命令行菜单可能会在一个 while true 循环中运行,处理命令并在收到 ‘exit’ 命令时 break。