zoukankan      html  css  js  c++  java
  • 【Lua】为什么 Lua 里没有 continue

    对于Lua里没有continue的问题相信很多用lua的人都遇到过,官方也有作出了解释

    在Lua中,repeat until 有点类似于C++的do while,但在机制上有一点区别,在Lua的until的条件表达式中,表达式中的变量可以是repeat until代码块内声明的局部变量,但在C++中,while的条件表达式中的变量不允许出现do while内部声明的临时变量,必须是do while外部声明的变量

    基于这个原因,我们假设Lua支持了continue,考虑以下代码:

    local a = 1  -- outer
    repeat
        if f() then
            continue
        end
        local a = 1  -- inner
        ...
    until a == 0

    由于continue会跳过后面local a = 1的声明,那么 until a == 0 到底是指内部的local a还是外部的a就会有歧义了!

    那么如何用别的机制来代码continue呢?有一个比较简单的方法:在循环内套一个repeat ... until true,再将想用continue的地方写成break。如:

    for i = 1, 10 do
        repeat
            if i == 5 then
                break
            end
            print(i)
        until true
    end
  • 相关阅读:
    Elasticsearch 分词
    Elasticsearch:文档乐观锁控制 if_seq_no与if_primary_term
    调用javaAPI访问hive
    sqoop笔记
    hive学习
    添加用户到sudo组
    HTTP协议用的TCP但是只建立单向连接
    Hadoop基本操作
    Hadoop原理介绍
    sed用法
  • 原文地址:https://www.cnblogs.com/jeJee/p/2697952.html
Copyright © 2011-2022 走看看