この第一版は Lua 5.0 向けに書かれました。後のバージョンと大差はありませんが、いくつかの違いがあります。
第四版は Lua 5.3 を対象として Amazon や書店でお求めいただけます。
書籍を購入されると、Lua プロジェクトのサポートにもご協力いただくことになります。
![]() |
Luaでのプログラミング | ![]() |
第 I 部: 言語 第 4 章: ステートメント |
for ステートメントには、数値 for とジェネリック for という 2 つのバリアントがあります。
数値 for の構文は次のとおりです。
for var=exp1,exp2,exp3 do something endこのループは、
exp3
を var
を増分するステップとして使用して、var
の exp1
から exp2
までの各値に対して something
を実行します。この第三の式は省略可能であり、省略されると Lua はステップ値として 1 を想定します。次の例は、そのようなループの典型的な例です。for i=1,f(x) do print(i) end for i=10,1,-1 do print(i) end
for ループには、その優れた活用方法に関するいくつかの注意点があります。まず、すべての 3 つの式はループが開始する前に 1 回評価されます。たとえば、最初の例では f(x)
は 1 回だけ呼び出されます。次に、制御変数は for ステートメントによって自動的に宣言されるローカル変数であり、ループ内でのみ参照できます。典型的な間違いとしては、ループが終了した後で依然としてこの変数が存在すると考えることが挙げられます。
for i=1,10 do print(i) end max = i -- probably wrong! `i' here is globalループ後に制御変数の値が必要な場合 (通常、ループを break した場合) は、この値を別の変数に保存する必要があります。
-- find a value in a list local found = nil for i=1,a.n do if a[i] == value then found = i -- save value of `i' break end end print(found)第三に、制御変数の値は変更しないでください。このような変更の結果は予測できません。for ループを正常に終了する前に break したい場合は、break を使用します。
Copyright © 2003–2004 Roberto Ierusalimschy. All rights reserved. | ![]() |