• lua循环


    循环

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

    while实现循环

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

    while (condition) do
        something
    end
    
    • 1
    • 2
    • 3

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

    for实现循环

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

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

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

    for i = 3,1,-1 do
        print(i)
    end
    
    -- 打印结果
    3
    2
    1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里可以借用函数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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这里借用了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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    for i = 1,3 do
        if i == 2 then
            goto s2
        end
        print(i)
        :: s2 ::
    end
    -- 打印结果
    1
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    for i = 1,3 do
        if i == 2 then
            break
        end
        print(i)
    end
    -- 打印结果
    1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

  • 相关阅读:
    小程序uView2.X框架upload组件上传方法总结+避坑
    【苹果家庭推送iMessage位置推送】群发安装软件获取home目录路径的函数: NSString *homeDir = NSHomeDirectory()
    Leetcode.486 预测赢家
    信息学奥赛一本通:1137:加密的病历单
    基于枚举实现的桥接模式
    如何使用grafana 下JSON API访问展示接口数据
    JOptionPane
    vue watch 侦听器 监视器
    聚观早报 |红魔9 Pro支持165W快充;2023Q3欧洲手机市场报告
    社交APP的核心功能都有哪些
  • 原文地址:https://blog.csdn.net/yeah_you_are/article/details/126142435