Lua学习笔记——循环

【声明】以下内容为网络内容的整理,仅供个人学习,非商业用途

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

循环控制语句

控制语句描述
break语句提出当前循环或语句,并开始脚本执行紧接着的语句
goto语句将程序的控制点转移到一个标签处

while 循环  

语法:

while(condition)    --条件
do   
    statements    --循环体
end

condition(条件)可以是任意表达式,statements(循环体语句)可以是一条语句或多条语句,执行流程如下:

用例:

a = 10
while(a < 15)
do
    print("a = ",a)
    a = a + 1
end

输出结果:

a = 10
a = 11
a = 12
a = 13
a = 14

for循环 

语法:

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

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

数值for循环

实例:

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

for i = 5, 1, -1 do
    print(i)
end

输出结果:

1
2
3
4
5
5
4
3
2
1

 泛型for循环

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

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

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

实例:

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循环 

语法:

repeat
    statements
until(condition)

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

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

实例:

a = 10
repeat
    print("a的值为:",a)
    a = a + 1
until(a > 15)

输出结果:

a的值为:    10
a的值为:    11
a的值为:    12
a的值为:    13
a的值为:    14
a的值为:    15

Lua语言  "repeat...until循环" 与 C语言 "do...while"区别

  repeat...until 实例:

a = 1
repeat
    print("a的值是:", a)
    a = a + 1
until(a > 5)

  do...while 实例:

int a = 1;
do {
	printf("a的值是%d\n", a);
	a = a + 1;
} while (a < 5);
Lua的repeat...until输出结果c的do...while输出结果
a的值是:    1
a的值是:    2
a的值是:    3
a的值是:    4
a的值是:    5
a的值是1
a的值是2
a的值是3
a的值是4

重点:细心观察的同学可以发现,until中的条件为a > 5,而while中的条件为a < 5,在Lua中的repeat...until循环中,是循环执行相关语句,知道满足until中的条件;而在C中的do...while循环中,是只有满足while中的条件,才会再次执行循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值