Lua for文 処理を繰り返すサンプル(break/continue)

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行目に飛びます。

関連の記事

Lua if文のサンプル

△上に戻る