Lua 循环


Lua的循环

Lua语言具备多种类型的循环结构,包括for和while循环。

for循环

for循环根据循环变量对一组值进行迭代,用于遍历一个指定范围内的变量。

语法

for var=exp1,exp2,exp3 do
    <执行体>
end

说明

exp1:起始值
exp2:终止值
exp3:步长值

for循环先设定一个变量,然后将变量用原始体内执行的第一个表达式赋值,循环体可以使用该变量,并以第三个表达式的结果加到该变量的值(或减去,如果第三个表达式是负数),并测试退出条件(第二个表达式是否达到,达到则退出循环)。

示例

下面是打印数组a中的所有值的for循环:

a = {1,2,3}
for i,v in ipairs(a) do
    print(v)
end

上面代码中,i是循环变量,ipairs()函数用于遍历数组a中所有元素。

while循环

while循环会一直执行,直到该循环条件为false为止。

语法

while (condition) do
    <执行体>
end

说明

while循环执行时,将首先对“condition”进行判断;如果“condition”为true,则进入循环体继续执行,执行完循环体后再次对“condition”进行判断,如果仍然为true,则再次进入循环体,以此类推,直到“condition”为false,则跳出循环体,继续执行循环体后的代码。

示例

下面是通过while循环计算1到100的总合:

sum = 0
i = 1
while i <= 100 do
    sum = sum + i
    i = i + 1
end
print("1 - 100 的总和为 ", sum)

上面代码中,首先定义了变量sum和i,利用while循环对1-100之间的数字进行求和操作,并最终输出结果。

repeat…until循环

repeat…until循环是在条件被检查之后才执行循环的一种历程。

语法

repeat
    <执行体>
until( condition )

说明

repeat…until 循环的循环体会首先被执行,然后才对条件进行检查。如果条件为false,则执行体将再次执行,然后继续检查条件,并重复此过程,直到条件为真为止。

示例

下面是通过repeat…until循环求1到100的总和:

sum = 0
i = 1
repeat
    sum = sum + i
    i = i + 1
until i > 100
print("1 - 100 的总和为 ", sum)

上面代码中,通过repeat…until循环对1-100之间的数字进行求和操作,并最终输出结果。

总结:

  • for循环用于遍历一个指定范围内的变量,while和repeat…until循环用于一直执行,直到该循环条件为false为止。
  • 迭代stme[1]到stme[2],每次以stme[3]为向量自增stme[1],并检查是否达到等于stme[2],直到条件为假为止。因此,内部语句将被执行stme[2]-stme[1]+1次(假设stme[1]<=stme[2])。
  • Lua并没有提供do…while循环结构,但是可以通过repeat…until循环来替代。