5.1 repeat…until 循环

Lua 编程语言中 repeat…until 循环语句不同于 for 和 while循环,for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。

我们注意到循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。

如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行。

  1. --[ 变量定义 --]
  2. a = 10
  3. --[ 执行循环 --]
  4. repeat
  5. print("a的值为:", a)
  6. a = a + 1
  7. until( a > 15 )

执行以上代码,程序输出结果为:

  1. a的值为: 10
  2. a的值为: 11
  3. a的值为: 12
  4. a的值为: 13
  5. a的值为: 14
  6. a的值为: 15

5.2 while循环

  1. a=10
  2. while( a < 20 )
  3. do
  4. print("a 的值为:", a)
  5. a = a+1
  6. end

执行以上代码,输出结果如下:

  1. a 的值为: 10
  2. a 的值为: 11
  3. a 的值为: 12
  4. a 的值为: 13
  5. a 的值为: 14
  6. a 的值为: 15
  7. a 的值为: 16
  8. a 的值为: 17
  9. a 的值为: 18
  10. a 的值为: 19

5.3 for 循环

Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。

Lua 编程语言中 for语句有两大类:

  • 数值for循环
  • 泛型for循环

数值for循环

Lua 编程语言中数值for循环语法格式:

  1. for var=exp1,exp2,exp3 do
  2. <执行体>
  3. end

var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次”执行体”。exp3是可选的,如果不指定,默认为1。

  1. function f(x)
  2. print("function")
  3. return x*2
  4. end
  5. for i=1,f(4) do
  6. print(i)
  7. end
  8. print("-------")
  9. for i=10,1,-1 do
  10. print(i)
  11. end
  1. function
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. -------
  11. 10
  12. 9
  13. 8
  14. 7
  15. 6
  16. 5
  17. 4
  18. 3
  19. 2
  20. 1

可以看到 函数f(x)只在循环开始前执行一次。

泛型for循环

泛型for循环通过一个迭代器函数来遍历所有值,类似java中的foreach语句。

Lua 编程语言中泛型for循环语法格式:

  1. #!/usr/local/bin/lua
  2. days = {"Suanday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
  3. for i,v in ipairs(days) do
  4. print(v)
  5. end

i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。

  1. Suanday
  2. Monday
  3. Tuesday
  4. Wednesday
  5. Thursday
  6. Friday
  7. Saturday