【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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM