迴圈 (Loop)
你可以在以下三種迴圈形式中,選擇其中一種,讓一段程式碼區塊重複被執行。
while
會在執行前先測試執行條件,如果執行條件為 false
,則會中斷,反之若執行條件為 true
則繼續執行:
myNumber = 1
while myNumber < 10 do
print( myNumber )
myNumber = myNumber + 1
end
repeat
會在每一次執行後才去判斷要不要繼續執行:
myNumber = 1
repeat
print( myNumber )
myNumber = myNumber + 1
until myNumber == 10
for
透過對數值的操作:像是累加或遞減,以決定要如何重複執行一段程式碼,程式碼將執行到該數值到達設定的限制為止:
for myValue = 1, 10 do
print( myValue )
end
這個 loop 會印出數字 1 ~ 10,你也可以指定第三個參數,讓該值每次以非 1 的差距累加或遞減:
for myValue = 10, 1, -1 do
print( myValue )
end
這段程式碼會依序將 10 ~ 1 印出,每次以 1 的差距遞減。當然你也可以根據其他值去遞減,像是 -12 或是 0.75
接著我們來看看下面的狀況:
myValue = 100
for myValue = 1, 10 do
print( myValue )
end
print( myValue )
當你去執行這段程式碼,可能會覺得很奇怪。首先 for
迴圈中的 print()
會依序印出 1~10 ,但是最後的 print()
卻會印出 100。這是由於 scope 的特性與 for 迴圈中發生的特殊現象導致的。定義在 for
迴圈中,作為累加器的變數對為本地 (local
) 變數,只有在 for
迴圈內的程式碼區塊存取得到。當離開 for
迴圈時,存取的自然就是原始版本的變數了 (第一行定義的變數)。