制御構造

制御構造 ifwhile、および 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 ステートメントは、ブロックの最後の ステートメントとしてのみ記述できます。returnbreak がブロックの途中で本当に必要であれば、明示的な内部ブロックを使用する do return enddo break end のようなイディオムを使用できます。これで、returnbreak も (内部の) ブロックの最後のステートメントになるためです。