式としてのループ
CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 5/66。
ほとんどのプログラミング言語において、ループはコードを繰り返し実行する文(statement)です。しかし、Rustにはユニークな機能があります。ループは値を返す式(expression)にもなり得るのです。これは、ループの結果を変数に代入できることを意味します。
ループから値を返すには、breakの後に返したい値を続けて記述します:
let result = loop {
// 何らかの条件チェック
if condition_met {
break 42; // ループを終了して42を返す
}
};10から始まる最初の偶数を見つける実用的な例を次に示します:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // 偶数を返す
}
counter += 1;
};
println!("First even number: {}", first_even);ループは偶数が見つかるまで継続し、その後 break counter を使用してループを抜け、その数値を返します。返された値は first_even に代入されます。
チャレンジ
簡単入力として開始番号を受け取ります。入力を読み込み、整数に変換し、その数値から始めて7で割り切れる最初の数値を見つけるために、式としてのループを使用してください。
要件:
- 値を返す
loop式を使用すること - 入力された数値からチェックを開始すること
- 7で割り切れる(7で割った余りが0になる)最初の数値を見つけること
breakを使用して、ループから見つかった数値を返すこと- 結果を出力すること
入力: 開始番号を表す単一の整数
出力: 入力された数値から始めて、7で割り切れる最初の数値を出力してください
チートシート
Rustでは、ループは値を返す式になることができます。breakの後に値を続けて記述することで、ループを終了し、その値を返します:
let result = loop {
if condition_met {
break 42; // ループを終了して42を返す
}
};最初の偶数を見つける例:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // 偶数を返す
}
counter += 1;
};
println!("First even number: {}", first_even);自分で試してみよう
use std::io;
fn main() {
// 入力を読み込む
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let start_number: i32 = input.trim().parse().expect("Invalid input");
// TODO: 以下にコードを記述してください
// ループ式を使用して、7で割り切れる最初の数を見つけます
// 結果を出力する
// println!("{}", result);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。