repeat-until ループ
CoddyのLuaジャーニー「基礎」セクションの一部 — レッスン 72/90。
Luaには、repeat-untilループと呼ばれる別の種類のループがあります。これには、先ほど学んだ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 が真になるまで振り続けます。この「まず実行し、後でチェックする」という動作により、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. 現在の試行内容を `password` に代入する
-- 2. 試行したパスワードを表示する
-- 3. 次の試行へ進む
-- password が correctPassword と一致したら停止するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。