制御構造体

制御構造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種類ある。

制御構造の条件式は任意の値を返すことができます。 falsenull は、両方とも false と見なされます。 nullfalse 以外のすべての値は、true と見なされます (特に、数値の 0 や空のストリングも true です)。

repeatuntil ループでは、 内側のブロックは until キーワードのところではなく、条件の後でのみ終ります。 そのため、 条件は、ループ・ブロックの内側で宣言されたローカル変数を参照できます。

return ステートメントは、関数またはチャンク (これは単なる関数である) から値を返すために使用されます。 関数およびチャンクは、複数の値を返すことができます。return ステートメントの構文は次のとおりです。
statement ::= return [explist]
break ステートメントは、whilerepeat、または for ループの実行を終了し、ループの後の次のステートメントにスキップするために使用します。
statement ::= break

break は最も内側のループを終了させます。

return ステートメントと break ステートメントは、ブロックの最後の ステートメントとしてのみ記述できます。 If it is really necessary to 戻る or 休憩 in the middle of a block, then an explicit inner block can be used, as in the idioms do return end and do break end, because now 戻る and 休憩 are the last statements in their (inner) blocks.