Menu
CoddyTech

repeat-untilループ

CoddyのLuaジャーニー「基礎」セクションの一部。レッスン 72/90。

Luaには、repeat-untilループと呼ばれる別の種類のループがあります。これは、今学んだwhileループとは異なる特徴を持っています。主な違いは、条件に関係なく、repeat-untilループは少なくとも1回はコードブロックを実行することです。

構文は次のようになります。

repeat
    -- 繰り返し実行するコード
until condition

条件は、コードがすでに1回実行された後、最後に確認されることに注目してください。条件がtrueになるまでループは繰り返し続けます。これは、条件がtrueである間続くwhileループとは逆です。

サイコロを振って6が出るまで繰り返す実践的な例を見てみましょう。

local roll = 0

repeat
    roll = math.random(1, 6) -- 1から6までの数字をランダムに出す
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

このループでは、少なくとも1回はサイコロを振ることが保証され、条件 roll == 6 が真になるまで振り続けます。この「まず実行し、あとで確認する」という動作により、続けるかどうかを決める前に何かを少なくとも1回は実行する必要がある場面では、repeat-until ループが最適です。

challenge icon

チャレンジ

簡単

簡単なパスワード検証のシミュレーションを作成します。

  1. 変数 password を作成し、空文字列("")に設定します。
  2. 別の変数 correctPassword を作成し、"secure123" に設定します。
  3. 次のパスワードの試行を順番どおりに含むテーブル attempts を作成します。
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. 変数 index を作成し、1 に設定します。現在どの試行を行っているかを追跡するために使います。
  5. repeat-until ループを使って、次の処理を行います。
    • attempts[index] を使って、現在の試行を password に代入します。これはテーブルから位置 index にある項目を読み取ります。
    • 現在の password を出力します。
    • 次の試行に進むため、index を1増やします(例:index = index + 1)。
  6. ループは、password が correctPassword と等しくなった場合にのみ停止します。

ループが実行されるたびに、テーブルから試行を1つ読み取り、それを出力してから次に進みます。正しいパスワードが見つかるまで、ループは続きます。

自分で試してみよう

-- 変数を初期化する
local password = ""
local correctPassword = "secure123"

-- パスワードの試行リスト
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- repeat-until ループを使って、次の処理を行う:
-- 1. 現在試しているパスワードを password に代入する
-- 2. 試したパスワードを出力する
-- 3. 次の試行に進む
-- password が correctPassword と一致したら停止する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ