Lua 循环
很多情况下我们需要做一些有规律性的重复操作,因此在程序中就需要重复执行某些语句。
一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。
循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。
循环语句是由循环体及循环的终止条件两部分组成的。
Lua 语言提供了以下几种循环处理方式:
循环类型 | 描述 |
---|---|
while 循环 | 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。 |
for 循环 | 重复执行指定语句,重复次数可在 for 语句中控制。 |
repeat...until | 重复执行循环,直到 指定的条件为真时为止 |
循环嵌套 | 可以在循环内嵌套一个或多个循环语句(while do ... end;for ... do ... end;repeat ... until;) |
循环控制语句
循环控制语句用于控制程序的流程, 以实现程序的各种结构方式。
Lua 支持以下循环控制语句:
控制语句 | 描述 |
---|---|
break 语句 | 退出当前循环或语句,并开始脚本执行紧接着的语句。 |
无限循环
在循环体中如果条件永远为 true 循环语句就会永远执行下去,以下以 while 循环为例:
while( true ) do print("循环将永远执行下去") end
loop.lua内容
-- while循环
a = 5;
while(a > 0) do
print(a);
a = a - 1;
end
print();
---------------------------------------------------
--[[ for循环
for var=exp1,exp2,exp3 do --var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次"执行体"。exp3是可选的,如果不指定,默认为1。
<执行体>
end
]]
for i = 1,10 do
print(i);
end
function f(x)
print("function");
return x*2;
end
-- for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。
for i = 1,f(5) do --循环前,先调用f(5) 得出10
print(i);
end
-- for循环table
days = {"Suanday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
for k,v in ipairs(days) do
print(v);
end
for k,v in pairs(days) do
print(v);
end
--[[
在lua中pairs与ipairs两个迭代器的用法相近,但有一点是不一样的:
pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key
]]
-------------------------------------------------
-- repeat .. until循环
a = 10;
repeat
print("value is :",a);
a = a+1;
until(a > 15)
----------------------------------------------
--循环嵌套
for x = 1,5 do
print("now is ",x);
for i = 1,2 do
print("loop",i .. " times");
end
end
j = 2;
for i = 2,10 do
for j = 2,(i/j),2 do
if(not(i%j)) then
break;
end
if(j > i/j) then
print("i's value is",i);
end
end
end