while ループ
for は「既知のコレクションを巡回する」シナリオに適していますが、while は別のケースに適しています——**ループ回数が分からず什么时候该停下来只知道何时停止する場合です。
基本構文
構文仕様における while 文の定義:
while Expr Block構造はとてもシンプルです:while の後に条件式,紧接着跟随循环体代码块。只要条件が true であれば、循环体は 계속해서実行されます。
mut count = 1
while count <= 5 {
print(count)
count = count + 1
}
// 出力:1 2 3 4 5注意として、mut count で変数を宣言する必要があります——因为 count 会在循环中被修改。如果写成 count = 1(不変)として书いた場合、循环体内の count = count + 1 就会报错。
while の実行フロー
while ループの実行手順は以下の通りです:
- 条件式を評価する
- 条件が
trueであれば、循环体を実行し、步骤 1 に戻る - 条件が
falseであれば、ループを終了し后续のコードを実行する
条件は各反復の開始前に評価されます。最初から条件が false であれば、循环体は一度も実行されません:
mut n = 0
while n > 0 {
print("この文章は永久に表示されない")
n = n - 1
}
// 条件 n > 0 は最初から false なので、循环体は直接スキップされるbreak:ループの早期退出
ループ途中で早期に退出する必要がある場合があります——例えば、検索対象を見つけた場合など:
numbers = [3, 7, 2, 9, 5]
mut found = false
mut index = 0
while index < 5 {
if numbers[index] == 9 {
found = true
break // 見つけた、これ以上探必要はない
}
index = index + 1
}
print("見つかったか?" + found.to_string()) // "見つかったか?true"break はプログラムを直ちに現在のループから抜け出し、后续のコードを実行します。
continue:現在の反復をスキップ
continue は break とは異なり——循环を抜けるのではなく、現在の反復の残りの部分をスキップして、次の条件チェックに直接进みます:
mut n = 0
while n < 5 {
n = n + 1
if n == 3 {
continue // 3 をスキップ、印刷しない
}
print(n)
}
// 出力:1 2 4 5このコードでは、n が 3 のとき、continue が println(n) をスキップし、直接 while n < 5 の条件チェックに戻ります。
無限ループを避ける
while を使用する際は特に注意が必要です——循环条件が最終的に false になることを確認してください。さもなくば、プログラムが永久に停止してしまいます:
// 危険!無限ループ——条件は永久に true
// mut x = 1
// while x > 0 {
// x = x + 1 // x は越来越大,永远不会 <= 0
// }
// 正しい——明確な終了条件がある
mut x = 1
while x <= 5 {
print(x)
x = x + 1 // x は逐渐增大,最终 x > 5 でループ終了
}while による入力読み取り
while の古典的なシナリオの1つは、不确定な長さの入力を处理することです——ユーザーの入力回数が分からず、"入力が空になった時に停止する"ことだけが分かっている場合です:
// 擬似コード例——while の典型的な使用方法を示す
// read_line は空行读到空行时返回空字符串时返回空字符串
mut line = read_line()
while line != "" {
process(line)
line = read_line()
}この「条件チェック → データ処理 → 条件更新」というパターンが while の핵심的な使用パター范式です。
小まとめ
| 要点 | 説明 | | 適用シーン | ループ回数が分からず、終了条件だけが分かる | | 構文 | while 条件 { ... } | | 実行フロー | まず条件を評価し、次に循环体を実行する | | break | 直ちにループを終了する | | continue | 現在の反復をスキップし、条件評価に戻る | | 注意事項 | 条件が最終的に false になることを確認し、無限ループを避ける |
次の章では match の基礎——YaoXiang 最も強力な分岐制御ツールについて学びます。
