Lua--循环

循环

循环语句是由循环体及循环的终止条件两部分组成的。

循环类型描述
while循环在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。
for循环重复执行指定语句,重复次数可在 for 语句中控制。
repeat…until重复执行循环,直到 指定的条件为真时为止
嵌套循环可以在循环内嵌套一个或多个循环语句(while do … end;for … do … end;repeat … until;)
while 循环

语法:

while(condition)
do
   statements
end

statements(循环体语句) 可以是一条或多条语句,condition(条件) 可以是任意表达式,在 condition(条件) 为 true 时执行循环体语句。


示例:

a = 10
while(a < 20)
do
	print(a)
	a = a + 1
end


-----
10
11
12
13
14
15
16
17
18
19
for循环

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

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

数值for循环

语法:

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

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

示例:

for i=1,10 do
	print(i)
end

----
1
2
3
4
5
6
7
8
9
10
for i=10,1,-1 do
    print(i)
end

for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。

function f(x)  
    print("function")  
    return x*2   
end  
for i=1,f(5) do print(i)  
end

-----
function
1
2
3
4
5
6
7
8
9
10

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

语法:

--打印数组a的所有值  
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 

示例:

days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}  
for i,v in ipairs(days) do  
	print(v) 
end   
------
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
repeat…until循环

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

语法:

repeat
   statements
until( condition )

我们注意到循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。
如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行。
Lua repeat…until 循环流程图如下:

示例:

-- 变量定义
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语法:

for init,max/min value, increment
do
   for init,max/min value, increment
   do
      statements
   end
   statements
end

while语法:

while(condition)
do
   while(condition)
   do
      statements
   end
   statements
end

repeat…until语法:

repeat
   statements
   repeat
      statements
   until( condition )
until( condition )

不同类型循环嵌套:

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	

---

i的值为:	8
i的值为:	9
i的值为:	10

循环控制语句

控制语句描述
break 语句退出当前循环或语句,并开始脚本执行紧接着的语句。
goto 语句将程序的控制点转移到一个标签处。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值