Lua 循环
Lua 循环
终止条件永远是循环的核心
很多情况下我们需要做一些有规律性的重复操作,因此在程序中就需要重复执行某些语句。
一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。
循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。
循环语句是由循环体及循环的终止条件两部分组成的。
Lua 语言提供了以下几种循环处理方式:
循环类型 | 描述 |
---|---|
while 循环 | 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。 |
for 循环 | 重复执行指定语句,重复次数可在 for 语句中控制。 |
repeat...until | 重复执行循环,直到 指定的条件为真时为止 |
循环嵌套 | 可以在循环内嵌套一个或多个循环语句(while do ... end;for ... do ... end;repeat ... until;) |
循环控制语句
循环控制语句用于控制程序的流程, 以实现程序的各种结构方式。
Lua 支持以下循环控制语句:
竟然没有continue
控制语句 | 描述 |
---|---|
break 语句 | 退出当前循环或语句,并开始脚本执行紧接着的语句。 |
goto 语句 | 将程序的控制点转移到一个标签处。 |
无限循环
在循环体中如果条件永远为 true 循环语句就会永远执行下去,以下以 while 循环为例:
while( true ) do print("循环将永远执行下去") end
for 循环
这里的for循环和shell以及cmd等脚本语言类似,包含两种类型
-
数值循环
-
泛型循环(像java的foreach)
数值循环
语法
for var=exp1,exp2,exp3 do <执行体> end
var 从 exp1 变化到 exp2,
每次变化以 exp3 为步长递增 var,
并执行一次 "执行体"。
exp3 是可选的,如果不指定,默认为1。
实例:
for i = 10, 1, -1 do print(i) end
实例:
用函数获取到exp2
function f(x) print("function") return x * 2 end for i = 1, f(5) do print(i) end
泛型循环
语法:
--打印数组a的所有值 a = {"one", "two", "three"} for i, v in ipairs(a) do print(i, v) end
-
i是数组索引值,
-
v是对应索引的数组元素值。
-
ipairs是Lua提供的一个迭代器函数,用来迭代数组。
while 循环
Lua 编程语言中 while 循环语句在判断条件为 true 时会重复执行循环体语句。
语法
while(condition) do statements end
实例
a=10 while( a < 20 ) do print("a 的值为:", a) a = a+1 end
repeat...until
Lua 编程语言中 repeat...until 循环语句不同于 for 和 while循环,
for 和 while 循环的条件语句在当前循环执行开始时判断,
而 repeat...until 循环的条件语句在当前循环结束后判断。
相当于java中的 do……while……
语法
repeat statements until( condition )
实例:
--[ 变量定义 --] a = 10 --[ 执行循环 --] repeat print("a的值为:", a) a = a + 1 until (a > 15)
break 语句
Lua 编程语言 break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句。
如果你使用循环嵌套,break语句将停止最内层循环的执行,并开始执行的外层的循环语句。
实例:
--[ 定义变量 --] a = 10 --[ while 循环 --] while (a < 20) do print("a 的值为:", a) a = a + 1 if (a > 15) then --[ 使用 break 语句终止循环 --] break end end
goto 语句
竟然保留了goto语句
goto是5.3以后才有的功能,所以目前环境用不了
语法
语法格式如下所示:
goto Label
Label 的格式为:
:: Label ::
以下实例在判断语句中使用 goto:
for i = 1, 10 do if i % 3 ~= 0 then goto workflow end print(i) :: workflow :: end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码