for構文にはNumeric forとGeneric forの2種類が存在します.
Generic forは難しいので,また後の章で説明することとします.
ここではNumeric forについて説明していきます.
Numeric forもwhile同様繰り返しの処理を行う場合に使用します.
ただし,whileとは違い,終了条件が数値でしか指定できません.
書式
for 初期値, 終了値, 増加量 do
処理
end
増加量は省略することができます.
その場合,自動的に増加量は1となります.
前節で登場したHello worldを10回表示するプログラムをfor
を使って書き直すと次のようになります.
for i = 1, 10, 1 do
print( i .. "回目:Hello world!")
end
iが1で始まり,iが10になるまで,iを1ずつ増加させていきます.
つまり,iが10以下の場合に繰り返しが行われます.
実行結果
1回目:Hello world!
2回目:Hello world!
3回目:Hello world!
4回目:Hello world!
5回目:Hello world!
6回目:Hello world!
7回目:Hello world!
8回目:Hello world!
9回目:Hello world!
10回目:Hello world!
増加量は省略することができます.
その場合は,自動的に1が割り当てられます.
for i = 1, 10 do
print( i .. "回目:Hello world!")
end
実行結果は先ほどと同じです.
増加量を4に変更してみましょう.どのような実行結果と
なるでしょうか.
for i = 1, 10, 4 do
print( i .. "回目:Hello world!")
end
実行結果
1回目:Hello world!
5回目:Hello world!
9回目:Hello world!
forを使う上で注意しなければならないことがあります.
それは,初期値で定義した変数(ループ変数)は
for文の中でのみ有効だということです.
つまり,forを抜けた時点でループ変数は消滅してしまいます.
例えば次のようなコードを書いたとします.
for i = 1, 10, 4 do
print( i .. "回目:Hello world!")
end
if i == nil then
print ("iは定義されていません")
end
for文で使用しているiとif文で使用しているiは別物です.
実行結果は以下のようになります.
実行結果
1回目:Hello world!
5回目:Hello world!
9回目:Hello world!
iは定義されていません
iは定義されていないので,nilとなっています.