循环
lua提供一下几种循环处理方式
while循环 条件为true,重复执行某些语句,执行前先检查条件是否为ture
for循环 重复执行指定语句,重复次数可在for语句控制
repeat...until 重复执行循环,直到指定条件为真时为止
循环嵌套 可以在循环中嵌套循环
循环控制语句:
break 退出当前循环或语句,并开始脚本执行接着的语句
无限循环
while(true)
do
print("循环一直执行")
end
while循环
语法
while(condition)
do
statemets
end
condition 循环条件
statemets 循环语句
for循环
for循环有两大类:
数值for循环
泛型for循环
数值for循环
for var = exp1,exp2,exp3 do
statemets
end
var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次statemets(循环体) ,exp3是可选的,如果不指定,默认是1.
--例:
function f(x)
print("function: ".. x);
return x * 2
end
for i = 1 ,f(5) do
print(i)
end
--结果 :
1
2
3
4
5
6
7
8
9
10
泛型for循环
泛型for循环通过一个迭代器函数来遍历所有制,类似C# 中foreach语句
泛型for循环语法格式
for i,v in ipairs(a) do
print(v)
end
i是数组索引值,v是对应索引的数组元素组,ipairs是Lua提供的一个迭代器函数,用来迭代数组.
--循环days
days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
for i,v in ipairs(days) do
print(i.." : "..v)
end
--结果:
1 : Sunday
2 : Monday
3 : Tuesday
4 : Wednesday
5 : Thursday
6 : Friday
7 : Saturday
repeat ...until
repeat ... until 不同与for和while
循环的条件语句在当前循结束后判断
repeat ... until 循环格式:
repeat
statements
until(condition)
例如
a = 10
repeat
print("a的值为",a)
a = a + 1
until( a > 15)
--结果:
a的值为 10
a的值为 11
a的值为 12
a的值为 13
a的值为 14
a的值为 15
嵌套循环
格式:
for init,max/min value, increment do
for init,max/min value, increment do
statements
end
statements
end
while(condition)
do
wile(condition)
do
statements
end
statements
end
repeat
statements
repeat
statements
until(condition)
until(condition)
除了上面的还有使用不同的循环类型进行嵌套循环