相較於if,Lua的for迴圈有兩種,或說是三種。
進步的for迴圈
印出1-10:
for i = 1, 10, 1 do
print(i)
end
很類似C語言
#include <stdio.h>
int main(void){
int i = 0;
for(i = 1; i <= 10; i++){
printf("%d\n", i);
}
}
不同的是以逗點代替分號,中止條件相同時仍會在執行一次,進步(step)使用表達是,會自動相加並重新賦予值。
了解後也可來寫成10到1的程式:
for i = 10, 1, -1 do
print(i)
end
for-do也是一個區塊,於一開始宣告的變數僅do-end內部可見。這表示下方寫法中,進步條件指的是外部的i,其值為1。結果與輸出1-10相同。
i = 1
for i = 1, 10, i do
print(i)
end
pairs & ipairs初探 - for-in迴圈
for-in迴圈用於迭代陣列(array)或表格(table)時。
Lua是沒有array型態的(還記得8種基礎型別嗎),關於這點之後會在說明。
至於什麼是table?可以想像成是ES6裡的object,或者更接近於Map
可以分別用ipairs和pairs來處理:
迭代陣列