UH2S1L6——循环语句

本章代码关键字

1
2
3
while...do...end        --这里的条件是循环条件,满足条件才进入代码块,执行完毕后再次进行比较
repeat...until... --这里的条件是跳出条件,满足条件就跳出代码块,不满足条件就再执行一次代码块
for...do...end --循环变量 = 起始值, 结束值, 步长(默认1)

while循环

while循环的结构如下:

1
2
3
4
5
while 循环条件表达式 do
当满足条件时就会执行该语句块的内容
......
当代码逻辑执行完,再次进行条件判断,符合条件就继续回到开头重新执行方法
end

例子

1
2
3
4
5
num = 0
while num < 5 do
print(num)
num = num + 1
end
1
2
3
4
5
0
1
2
3
4

repeat…until循环

有点类似于do...while​循环,不管满不满足条件都会先执行一次循环体内的代码
区别是,until关键字后跟的是结束条件表达式,当满足条件时才跳出循环,否则继续循环

1
2
3
repeat
第一次进入或者不满足结束条件时就执行这里的代码块
until 结束条件表达式

例子

1
2
3
4
5
num = 0
repeat
print(num)
num = num + 1
until num > 5

for循环

数字for循环的结构如下:

1
2
3
4
5
for 循环变量 = 起始值, 结束值, 步长(可不填,默认1do
当循环变量比结束值小时(起始值<结束值,步长大于>0)或循环变量比结束值大时(起始值>结束值,步长大于<0
执行这里的代码块
执行结束,将循环变量加上步长
end

除了这种for循环以外,Lua里也有类似于C#的foreach那样的for循环存在,可见表的迭代器遍历部分

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 注意,如果这里不写第三个参数,则i默认是递增,每次循环加1
for i = 1, 5 do
print(i)
end
print("**********")
-- 第三个参数是每次循环递增多少
for i = 1, 10, 2 do
print(i)
end
print("**********")
-- 如果想递减,则第三个参数填入负数即可
for i = 5, 1, -1 do
print(i)
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
**********
1
3
5
7
9
**********
5
4
3
2
1