Luaのfor文で処理を繰り返すサンプルです。
目次
for文 | for文(Numeric for) / for文のサンプルコード |
break | ループ処理を途中で終了する(break) |
入れ子のときにbreakを使用する | |
continue | ループ処理で処理をスキップする(continueにあたる処理) |
入れ子のときにcontinueにあたる処理を使用する |
for文(Numeric for)
for 変数 = 開始の数値 , 終了の数値,[増減値] do 繰り返される箇所 end |
- 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。
- 変数が開始値から終了値の範囲内の間、繰り返します。
- 増減値は省略可です。省略の場合は1になります。マイナス値の指定も可能です。
- 使用する変数をカウンター変数またはループ変数といいます。変数名はiやjがよく使用されます。
- これはNumeric forです。Generic forというのもあります。以下はGeneric forのリンクです。
https://www.lua.org/pil/4.3.5.html
for文のサンプルコード
for i = 1 , 3 do
print(i) -- 1 2 3が出力される
end
for i = 3 , 1 ,-1 do
print(i) -- 3 2 1が出力される
end
for i = 1 , 5 , 2 do
print(i) -- 1 3 5が出力される
end
arr = {"赤","黄","青"}
for i = 1 , #arr do
print(arr[i]) -- 赤 黄 青が出力される
print(i) -- 1 2 3が出力される
end
3行目は、iは1から始まり3で終了しますます。
iの値は、1ずつ増えていきます。
14行目は、テーブルです。
15行目の#arrは、テーブルの長さの3を返します。
16行目は、変数と添字で配列の値を表示しています。テーブルの添字は1から始まります。
ループ処理を途中で終了する(break)
break |
- for文でbreakを使用するとループ処理から抜けます。
for i = 1 , 3 do
if i == 2 then
break
end
print(i) -- 1が出力される
end
4行目のbreakでfor文を抜けます。i=1のみ出力されます。
入れ子のときにbreakを使用する
for文が入れ子のときにbreakを使用するサンプルです。
for i = 1 , 2 do
for j = 1 , 2 do
if j == 1 then
break
end
print(j) -- 出力なし
end
print(i) -- 1 2が出力される
end
2,3行目にfor文があり入れ子になっています。
5行目のbreakは、内側のfor文のみ抜けます。
ループ処理で処理をスキップする(continueにあたる処理)
for文で他言語でのcontinueにあたる処理を行うサンプルです。
Luaにはcontinueがありません。gotoとラベルで代用します。
https://stackoverflow.com/questions/3524970/why-does-lua-have-no-continue-statement
for i = 1 , 3 do
if i == 2 then
goto continue
end
print(i) -- 1 3が出力される
::continue::
end
4行目のgotoとラベル(continue)でループ処理をスキップします。1と3が出力されます。
入れ子のときにcontinueにあたる処理を使用する
for文が入れ子のときに他言語でのcontinueにあたる処理を行うサンプルです。
for i = 1 , 2 do
for j = 1 , 2 do
if j == 1 then
goto continue
end
print("j="..j) -- j=2 j=2が出力される
::continue::
end
print("i="..i) -- i=1 i=2が出力される
end
2,3行目にfor文があり入れ子になっています。
5行目のgotoとラベル(continue)は、8行目に飛びます。
関連の記事