repeat-until ループ
CoddyのLuaジャーニー「基礎」セクションの一部。レッスン 72/90。
Luaにはrepeat-untilループと呼ばれるもう1つの種類のループがあり、これは先ほど学んだwhileループとは異なる独自の特徴を持っています。主な違いは、repeat-untilループは条件に関係なく、常にそのコードブロックを少なくとも1回は実行する点です。
構文は次のようになります:
repeat
-- 繰り返すコード
until condition条件はコードが一度実行された後、最後にチェックされることに注目してください。ループは条件が 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 が真(true)になるまで振り続けます。この「最初に実行し、後で確認する」という挙動により、repeat-until ループは、継続するかどうかを判断する前に少なくとも1回は何かを実行する必要がある状況に最適です。
チャレンジ
簡単シンプルなパスワード検証シミュレーションを作成します。
passwordという名前の変数を作成し、空の文字列("")をセットします。correctPasswordという名前の別の変数を作成し、"secure123"をセットします。- 以下のパスワード試行値を順番通りに含む
attemptsという名前のテーブルを作成します:"password""123456""admin""secure123"
indexという名前の変数を作成し、1をセットします。これを使用して、現在どの試行を行っているかを追跡します。repeat-untilループを使用して以下を行います:attempts[index]を使って現在の試行値をpasswordに代入します — これはテーブルの位置indexにある要素を読み込みます- 現在の
passwordを出力します - 次の試行に進むために
indexを 1 増やします(例:index = index + 1)
- ループは
passwordがcorrectPasswordと等しくなったときにのみ停止する必要があります。
ループが実行されるたびに、テーブルから 1 つの試行値を読み込んで出力し、次に進みます。正解のパスワードが見つかるまでループは継続します。
自分で試してみよう
-- 変数を初期化する
local password = ""
local correctPassword = "secure123"
-- パスワード試行のリスト
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1
-- TODO:
-- repeat-untilループを使用して:
-- 1. 現在の試行を指示からの正確なテキストに割り当てる
-- 2. 試行したパスワードを出力する
-- 3. 次の試行に移る
-- passwordがcorrectPasswordと一致したら停止するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ