Lua 允許任意型別迴圈互相嵌套:for 套 for、while 套 while、repeat 套 for 等,靈活解決多維遍歷、矩陣運算、演算法實作等問題。
for i = 1, 3 do
for j = 1, 3 do
print(i, j)
end
end
while cond1 do
while cond2 do
-- body
end
end
repeat
repeat
-- body
until cond2
until cond1
for、內層 while 完全合法。for j=... 中的 j)僅在內層可見,外層不可存取。break 僅跳出最內層迴圈;return 直接離開整個函數。for i = 2, 10 do
local is_prime = true
for j = 2, math.sqrt(i) do
if i % j == 0 then
is_prime = false
break -- 僅跳出內層 j 迴圈
end
end
if is_prime then
print("Value of i is", i)
end
end
Value of i is 2
Value of i is 3
Value of i is 5
Value of i is 7
(原文範例輸出 8,9,10 似為邏輯錯誤,上方修正為正確質數判斷邏輯)
local matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}
for i, row in ipairs(matrix) do
for j, val in ipairs(row) do
print(string.format("matrix[%d][%d] = %d", i, j, val))
end
end
for i=... 隱式區域化,避免全域污染。break、條件旗標減少無效迭代。