Menu
Coddy logo textTech

式としてのループ

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 に割り当てられます。

challenge icon

チャレンジ

簡単

開始番号を入力として受け取ります。入力を読み取り、整数に変換し、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);
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ