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

Luaのwhile文のサンプルです。条件の結果で処理の繰り返しを制御します。

目次

while文 while文
break ループを途中で終了する(break)
  入れ子のときにbreakを使用する
continue ループで処理をスキップする(continue(代わり))
  入れ子のときにcontinue(代わり)を使用する
  do...while文にあたる書き方
演算子 比較演算子

while文

while 条件 do
       実行される処理
end
  • 条件がtrueの間、処理を繰り返します。
  • 最初の条件の判定がfalseの場合、ループは1回も実行されません。
  • 以下は、lua公式のwhileのリンクです。
    https://www.lua.org/pil/4.3.2.html

while文のサンプルです。


i = 0

while i < 3 do
	print(i) -- 0 1 2が出力される
	i = i + 1
end

4行目は、値が3より小さい間、処理を繰り返します。
6行目は、条件になる値を加算しています。

ループを途中で終了する(break)

ループを途中で終了するサンプルです。


i = 0

while i < 5 do
	if i == 3 then
		break
	end
	print(i) -- 0 1 2が出力される
	i = i + 1
end

6行目のbreakは、while文を抜けます。
そのため8行目の文字列の出力は0,1,2のみ出力されます。

入れ子のときにbreakを使用する

入れ子のときにbreakを使用するサンプルです。


i,j = 0,0

while i < 2 do
	while j < 2 do
		if j == 0 then
			break
		end
		print("j="..j) -- 出力なし
		j = j + 1
	end
	print("i="..i) -- i=0 i=1が出力される
	i = i + 1
end

ループで処理をスキップする(continue(代わり))

他言語でのcontinueにあたる処理を行うサンプルです。

Luaにはcontinueがありません。gotoとラベルで代用します。


i = 0

while i < 5 do
	if i == 3 then
		goto continue
	end
	print(i) -- 0,1,2,4が出力される
	::continue::
	i = i + 1
end

6行目のgotoとラベル(continue)は、9行目に飛びます。
このサンプルでは10行目の加算がないと無限ループになるので注意して下さい。

入れ子のときにcontinue(代わり)を使用する

入れ子のときにcontinue(代わり)を使用するサンプルです。


i,j = 0,0

while i < 2 do
	while j < 2 do
		if j == 0 then
			goto continue
		end
		print("j="..j) -- j=1が出力される
		::continue::
		j = j + 1
	end
	print("i="..i) -- i=0 i=1が出力される
	i = i + 1
end

4,5行目にwhile文があり入れ子になっています。
7行目のgotoとラベルは、10行目に飛びます。

do...while文にあたる書き方

do...while文にあたる書き方のサンプルです。


a,b = 0,0

repeat
	print(a) -- 0 1 2が出力される
	a = a + 1
until a == 3

while true do
	print(b) -- 0 1 2が出力される
	b = b + 1
    if b > 2 then
        break
    end
end

4行目のrepeatから7行目のuntilでループします。untilの横に条件があります。最初の1回は必ず実行されます。

9行目は、while trueで最初の1回は必ず実行されます。
11行目は、ループの変数を1加算しています。
12行目の条件がtrueになったときに13行目のbreakでwhile文を抜けます。

関連の記事

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

△上に戻る