Menu
Coddy logo textTech

式としてのループ

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 に代入されます。

challenge icon

チャレンジ

簡単

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

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

Logic & Flowのすべてのレッスン