Lua for文のサンプル(break/continue)

Luaのfor文のサンプルです。

確認環境
・Lua 5.4.1

目次

for文 for文
break ループ処理を途中で終了する(break)
  入れ子のときにbreakを使用する
continue ループ処理で処理をスキップする(continue(代わり))
  入れ子のときにcontinue(代わり)を使用する

for文

for 変数 = 開始の数値 , 終了の数値,[加算する値] do
  繰り返される箇所
end
  • 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。
  • 開始の数値から終了の数値まで、処理を繰り返します。
  • 加算する値は省略可です。省略の場合は1になります。
  • ループで使用する変数をカウンター変数またはループ変数といいます。
  • これは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

arr = {"赤","黄","青"}
for i = 1 , #arr do
	print(arr[i]) -- 赤 黄 青が出力される
	print(i) -- 1 2 3が出力される
end

3行目は、iは1から始まり3で終了しますます。
iの値は、1ずつ増えていきます。

6行目は、テーブルです。
7行目の#arrは、テーブルの長さの3を返します。
8行目は、変数と添字で配列の値を表示しています。テーブルの添字は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文のサンプル

△上に戻る