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
|
请发表评论