制御構文





if


SYNTAX if 式 then 文 else 文 end if 式 then 文 elseif 式 then 文 else 文 end WARNING 型が異なるもの同士の比較はすべて false; [ "false" | "nil" ] 以外はすべて 真
-- 以下すべて真 if ( 0 ) then ... end; if ( "" ) then ... end; if ( {} ) then ... end;
0 = "0"; // RET: false a, b = 128, 18; if a == b then print("equal"); else print("not equal"); end



for


SYNTAX for Name `=´ exp `,´ exp [`,´ exp] do block end for 変数 = 初期値, 終了値[, 増加量] do 文 end for 変数 = 初期値, 終了値, 増加量 do 〜 end 0 から 10 まで
for i=0,10 do print(i); end
2 個飛ばしで
for i=0,10,2 do print(i); end
配列(テーブル)をイテレートする
a = { 3, 4, 5 } for i=1,#a do print( a[i] ); end
WARNING [ i ]は ローカル変数のため, for 文が終了した瞬間に終了。 break については block 末尾のみできる
for i = 0, 10 do print("test") do break; end print("test") end



repeat


SYNTAX repeat 文 until 条件式
local cnt = 0; repeat print( cnt ); cnt = cnt + 1; until cnt > 3



while


SYNTAX while 評価式 do 文 end WARNING break; は block 末尾にある必要がある.


foreach


SYNTAX for key,value in pairs(連想配列) do 文 end DESC 配列扱いのテーブルを巡回する場合は、ipairs() 関数を利用する。
local a = { 1, 2, 5, 8 }; for i, v in pairs( a ) do print(tostring(i) .. " = " .. tostring(v) ) end
WARNING 巡回する index の最大値は最大のインデックスまで。 index は連続している必要はない。