循环控制语句
Lua 提供了四种循环控制语句: while...do 循环、repeat...until 循环、数值for循环、泛型for循环;
同时,Lua提供了 break 和 goto 两种循环流程控制语句;
while...do
循环结束条件放在 while 之后; 示例如下所示:
lua
-- while_do_test.lua
a = 3;
-- while do 循环
while a > 0 do
print(a)
a = a-1 -- 递减
end
执行结果如下所示:
repeat...until
循环条件放在 until 之后, 且循环至少会执行一次, 且不同的是当 until 中的条件成立之后, 循环便会停止运行; 如下所示:
lua
-- repeat_until_test.lua
a = 3
repeat
print(a)
a = a-1
until a <= 0
执行结果如下所示:
数值for循环
数值 for 循环只参与循环变量为数值型的情况, 语法格式如下所示:
lua
for var = (起始值, 结束值, 步长) do
循环体
end
即类似于Java中的普通for循环: for(i = 起始值; i <= 结束值; i = i + 步长)
; 若省略步长, 则默认步长为 1;
简单示例如下所示:
lua
-- value_for_test.lua
for i = 1, 5 do
print(i)
end
执行结果如下所示:
泛型for循环
泛型 for 用于遍历 table 中的所有值, 需要与 Lua 的迭代器联合使用; 详见table学习;
break 关键字
break 语句可以提前终止循环, 且该关键字只能用于循环之中;
示例如下所示:
lua
-- break_test.lua
for i = 1, 9 do
print(i)
if i == 5 then
break -- i = 5 时 退出循环
end
end
执行结果如下:
goto 语句
可以将执行流程无条件跳转到指定标记语句处开始执行; 即从标记语句处开始顺序执行往后的所有语句;
此外, 被标记的语句在第一次经过时也会执行, 而不是非得跳转后才能执行;
语句标记: 是使用一对双冒号括起来, 置于语句前面; goto 语句也可以使用在循环之外; 且 Lua 5.1 版本并不支持 爽冒号 的语句标记;