目录
lua循环
lua语言提供了以下几种循环处理方式:
循环类型 | 描述 |
while循环 | 在条件为true时,让程序重复的执行某些语句。执行语句前会先检查条件是否为true |
for循环 | 重复执行指定语句,重复次数可在for语句中控制。 |
repeat...until | 重复执行循环,直到指定条件为真时为止。 |
循环嵌套 | 可以在循环内嵌套一个或多个循环语句 |
while循环语法
while(condition)
do
statements
end
statements(循环体语句)可以是一条或多条语句。
conditon (条件): 可以是任意表达式
在condition(条件)为true时执行循环体语句。
a = 10
while(a < 20)
do
print("a = ",a)
a = a + 1
end
root@mzs:/home/mzs/lua_study/lua_mzs/hello# lua while.lua
a = 10
a = 11
a = 12
a = 13
a = 14
a = 15
a = 16
a = 17
a = 18
a = 19
for 循环
for var=exp1,exp2,exp3 do
<执行体>
end
var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次“执行体”。exp3是可选的,如果不指定默认为1
function f(x)
print("function")
return x*2
end
for i=1,f(5) do
print(i)
end
root@mzs:/home/mzs/lua_study/lua_mzs/hello# lua for.lua
function
1
2
3
4
5
6
7
8
9
10
for的三个表达式在循环开始前一次性求值,以后不在进行求值。比如上面f(x)只会在循环开始前执行一次,其结果用在后面的循环中。
泛型for循环
泛型for循环通过一个迭代函数来遍历所有值。
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i,v)
end
root@mzs:/home/mzs/lua_study/lua_mzs/hello# lua for_ipairs.lua
1 one
2 two
3 three
lua reapeat ... until 循环
repeat ... until 循环的条件语句在当前循环结束后判断。
repeat
statements
until (condition)
在条件进行判断前,循环体都会执行一次。
如果条件判断语句为false,循环体会重新开始执行,知道条件条件判断语句(condition)为true 才会停止执行。
a = 10
repeat
print("a = ",a)
a = a + 1
until (a > 15)
root@mzs:/home/mzs/lua_study/lua_mzs/hello# lua repeat_until.lua
a = 10
a = 11
a = 12
a = 13
a = 14
a = 15
循环嵌套
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 == ",i)
end
end
end
root@mzs:/home/mzs/lua_study/lua_mzs/hello# lua xunhuan.lua
i == 8
i == 9
i == 10
循环控制语句
控制语句 | 描述 |
break 语句 | 退出当前虚幻或语句,并开始脚本执行后续语句 |
a = 10
while (a < 20)
do
print("a == ",a)
a = a + 1
if(a > 15) then
break
end
end
root@mzs:/home/mzs/lua_study/lua_mzs/hello# lua break.lua
a == 10
a == 11
a == 12
a == 13
a == 14
a == 15
无限循环
while(true)
do
print("go forever ...")
end