【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

posted on   jeJee  阅读(32641)  评论(1编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示