【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