lua循环

循环

既然同为编程语言,那么控制逻辑里的循环就不能缺少,它可以帮助我们实现有规律的重复操作,而循环一般由循环体和停止条件组成。而lua的循环可以由 while for repeat ... utilgoto 实现。

while实现循环

while实现循环在很多编程语言中都有见到,应该是我们最熟悉的方式。

while (condition) do
    something
end

当其中condition为true时,执行循环体something,这个常见理解简单。

for实现循环

for循环也是常见的,但是因lua的不同有些还需要注意。

  • 数值循环遍历
for i = exp1,exp2,exp3 do
    something
end

这里的语句意思是i在区间[exp1,exp2]之间按照步长exp3推进,一般步长不写默认为1。

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

-- 打印结果
3
2
1
  • table循环遍历
local a = {a = "1",b = "2",c = "3"}
for k,v in pairs(a) do
    print(k .. " : " .. v)
end
-- 打印结果
a : 1
b : 2
c : 3

这里可以借用函数pairs解析其中的键值对。

  • list数组循环遍历
local b = {1,2,3,4,5}
for k,v in ipairs(b) do
    print(k .. " : " .. v)
end
--打印结果
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5

这里借用了ipairs函数解析数组,注意lua中的数组下标是从1开始的。

repeat … util 实现循环

这个类似于 do ... while ,只不过这里只有循环条件为true才会停止执行循环,而 do ... while 循环是当条件为false才会停止循环。

local i = 1
repeat
    print(i)
    i = i + 1
until i > 3
-- 打印结果
1
2
3

goto实现循环

goto语句其实也很熟悉了,c语言中就有,但是java中就没有。但是由于这种语句不利于代码的阅读,一般都不太推荐使用。

local i = 1
-- 定义label s1
:: s1 :: print(i)
i = i + 1
if i <= 3 then
    -- 跳转到定义的label s1
    goto s1
end
-- 打印结果
1
2
3

在lua中没有continue关键字,所以也并不提供这个功能,但是使用goto就可以实现这个功能。

for i = 1,3 do
    if i == 2 then
        goto s2
    end
    print(i)
    :: s2 ::
end
-- 打印结果
1
3

当然想要跳出循环可以使用break,但是break对于goto实现的循环不能起到跳出循环的作用,会引起报错。

for i = 1,3 do
    if i == 2 then
        break
    end
    print(i)
end
-- 打印结果
1

这便是lua中所有实现循环的方式了,希望对你有用。

Lua中的table是一种非常重要的数据结构,可以用来存储和组织数据。在Lua中,table可以被看作是一种关联数组,它可以通过任意类型的值作为索引来访问和操作其中的元素。 在Lua中,我们可以使用不同的方式来循环遍历table的元素。下面是几种常见的循环方式: 1. 使用pairs函数循环遍历table的键值对: ```lua local myTable = {key1 = value1, key2 = value2, key3 = value3} for key, value in pairs(myTable) do print(key, value) end ``` 这种方式会遍历table中所有的键值对,并将键和值分别赋值给变量key和value。 2. 使用ipairs函数循环遍历table的数组部分: ```lua local myTable = {"apple", "banana", "orange"} for index, value in ipairs(myTable) do print(index, value) end ``` 这种方式适用于table中只包含连续整数作为索引的情况,它会遍历数组部分,并将索引和对应的值分别赋值给变量index和value。 3. 使用数字索引循环遍历table: ```lua local myTable = {10, 20, 30} for i = 1, #myTable do print(i, myTable[i]) end ``` 这种方式适用于table中只包含连续整数作为索引的情况,通过指定起始索引和结束索引的方式来循环遍历table。 4. 使用迭代器函数循环遍历table: ```lua local myTable = {key1 = value1, key2 = value2, key3 = value3} for key, value in pairs(myTable) do print(key, value) end ``` 这种方式使用了Lua中的迭代器函数,可以自定义遍历table的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值