Menu
Coddy logo textTech

repeat-until ループ

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

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

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

repeat
    -- 繰り返すコード
until condition

conditionは最後に、コードがすでに一度実行された後でチェックされることに注意してください。until、つまりtrueになるまで、loopは繰り返し続けます。これは、conditiontrueである間続く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 が真になるまで振り続けます。この「最初に実行し、後で確認する」動作により、repeat-until ループは、続行するかどうかを決める前に何かを少なくとも1回実行する必要がある状況に最適です。

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. ループは、passwordcorrectPasswordと等しい場合にのみ停止する必要があります。

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

自分で試してみよう

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

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

-- TODO:
-- repeat-untilループを使用して:
-- 1. 現在の試行を指示の正確なテキストに割り当てる
-- 2. 試行したパスワードを出力する
-- 3. 次の試行に移る
-- passwordがcorrectPasswordと一致したら停止
quiz icon腕試し

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

基礎のすべてのレッスン

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