制御構造
制御構造 if、while、および repeat は、通常の意味と構文を持ちます。
statement ::= while exp do block end
statement ::= repeat block until exp
statement ::= if exp then block {elseif exp then block}
[else block]
end
Lua には for ステートメントもあり、これには 2 種類あります (『制御構造』を参照)。
制御構造の条件式は任意の値を返すことができます。false とnull は、両方とも false と見なされます。null とfalse 以外のすべての値は、true と見なされます (特に、数値の 0 や空のストリングも true です)。
repeat–until ループでは、 内側のブロックは until キーワードのところではなく、条件の後でのみ終ります。そのため、 条件は、ループ・ブロックの内側で宣言されたローカル変数を参照できます。
return ステートメントは、関数またはチャンク (これは単なる関数である) から値を返すために使用されます。関数およびチャンクは、複数の値を返すことができます。return ステートメントの構文は次のとおりです。
statement ::= return [explist]break ステートメントは、while、repeat、または for ループの実行を終了し、ループの後の次のステートメントにスキップするために使用します。
statement ::= breakbreak は最も内側のループを終了させます。
return ステートメントと break ステートメントは、ブロックの最後の ステートメントとしてのみ記述できます。return や break がブロックの途中で本当に必要であれば、明示的な内部ブロックを使用する do return end や do break end のようなイディオムを使用できます。これで、return も break も (内部の) ブロックの最後のステートメントになるためです。