式としてのループ
CoddyのRustジャーニー「論理とフロー」セクションの一部。レッスン 5/66。
ほとんどのプログラミング言語では、ループはコードを繰り返し実行する文です。しかし、Rust には独自の機能があります。ループは値を返す expressions にすることもできます。つまり、ループの result を変数に代入できます。
ループから値を返すには、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);loop は even number を見つけるまで続き、その後 break counter を使って loop を exit し、その number を return します。return された値は first_even に割り当てられます。
チャレンジ
簡単開始番号を入力として受け取ります。入力を読み取り、整数に変換し、loop 式を使って、その番号から始めて 7 で割り切れる最初の数を見つけます。
要件:
- 値を返す
loop式を使用する - 入力された番号から checking を開始する
- 7 で割り切れる最初の数を find する(7 で割ったときの余りが 0)
breakを使用して、見つかった番号を loop から返す- result を Print する
入力: 開始番号を表す単一の整数
出力: 入力された番号から始めて、7 で割り切れる最初の数を Print する
自分で試してみよう
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);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ