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

目次

while文とは

while文のサンプル

while文の基本 / break (ループを途中で終了する) / ネストしたwhileとbreakの挙動 /
continue相当の処理 / gotoによるcontinue(Lua 5.2以降)

repeat ... until(後判定ループ)

while文とは

while 条件 do
       処理
end
  • 条件が trueの間、繰り返します
  • 条件が最初からfalseなら 一度も実行されません
  • 条件をfalseにするロジックがないと無限ループになるので注意が必要です

while文のサンプル

while文の基本

i = 0

while i < 5 do
	print(i) -- 0 1 2 3 4
	i = i + 1
end

値が5より小さい間、処理を繰り返します。

 

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

i = 0

while i < 5 do
	if i == 3 then
		break
	end
	print(i) -- 0 1 2
	i = i + 1
end

breakはループを即終了

 

ネストしたwhileとbreakの挙動

i = 0

while i < 2 do
    j = 0

    while j < 3 do
        if j == 1 then
            break
        end

        print("j=" .. j) -- j=0 j=0
        j = j + 1
    end

    print("i=" .. i) -- i=0 i=1
    i = i + 1
end
  • breakは内側のwhileのみ終了
  • 外側のwhileには影響しない

全部のループを抜けたいと思ってもbreakではできません。
→ フラグ変数や関数化で制御するのが一般的です。

 

continue相当の処理

Luaにはcontinueがありません。

ifで制御します。

i = 0

while i < 5 do
    if i ~= 3 then
        print(i) -- 0 1 2 4
    end

    i = i + 1
end

 

gotoによるcontinue(Lua 5.2以降)

Lua 5.2以降では goto が使えます。

ただし、可読性が下がるため基本は非推奨です。

i = 0

while i < 5 do
    if i == 3 then
        i = i + 1
        goto continue
    end

    print(i) -- 0 1 2 4
    i = i + 1

    ::continue::
end

5行目のインクリメントがないと無限ループになるので注意が必要です。

repeat ... until(後判定ループ)

repeat ... untilは、必ず1回は実行されます。

条件のチェックのタイミングは、ループの後です。条件がtrueになったら終了します。

i = 0

repeat
    print(i) -- 0 1 2 3 4
    i = i + 1
until i >= 5

 

空文字(何も入力されていない)なら、入力をやり直させるループの例

repeat
    print("Please enter something")
    input = io.read()
until input ~= ""

print("The contents are " .. input)

処理の流れ

  1. メッセージを表示 (Please enter something)
  2. 入力を受け取る (input = io.read())
  3. 空文字かチェック (input ~= "")
  4. 空なら繰り返し
  5. 空でなければ終了してprint

関連の記事

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

△上に戻る