Menu
Coddy logo textTech

複数の値とのマッチング

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 2/66。

時には、すべて同じコードをトリガーする必要がある複数の異なる値をマッチさせたい場合があります。各値に対して個別のパターン(アーム)を書く代わりに、Rustでは、| (OR) 演算子を使用して、複数のパターンを1つのアームに組み合わせることができます。

1つのアームで複数の値をマッチさせる方法は次のとおりです:

let month = 12;

match month {
    12 | 1 | 2 => println!("Winter"),
    3 | 4 | 5 => println!("Spring"),
    6 | 7 | 8 => println!("Summer"),
    9 | 10 | 11 => println!("Fall"),
    _ => println!("Invalid month"),
}

| 演算子は、英語の「OR」のように機能します。値が | で区切られたパターンのいずれかに一致する場合、そのアームが実行されます。これにより、すべて同じ処理を行う個別のアームを複数用意するよりも、コードがはるかにすっきりします。

challenge icon

チャレンジ

簡単

入力として、曜日を表す日の番号(1-7)を受け取ります。入力を読み取り、整数に変換し、match 式と | 演算子を使用して、それが平日か週末かを出力してください。

要件:

  • 日が 1234、または 5 の場合は、"Weekday" と出力してください。
  • 日が 6 または 7 の場合は、"Weekend" と出力してください。
  • それ以外の数値の場合は、"Invalid day" と出力してください。

入力: 日の番号を表す単一の整数

出力: "Weekday""Weekend"、または "Invalid day" のいずれかを出力してください。

チートシート

| (OR) 演算子を使用すると、1つのマッチアームで複数のパターンを組み合わせることができます。値が | で区切られたパターンのいずれかに一致する場合、そのアームが実行されます。

let month = 12;

match month {
    12 | 1 | 2 => println!("Winter"),
    3 | 4 | 5 => println!("Spring"),
    6 | 7 | 8 => println!("Summer"),
    9 | 10 | 11 => println!("Fall"),
    _ => println!("Invalid month"),
}

自分で試してみよう

use std::io;

fn main() {
    // 入力を読み込む
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let day: i32 = input.trim().parse().expect("Please enter a number");
    
    // TODO: 以下に | 演算子を使用した match 式を使ってコードを記述してください
    
}
quiz icon腕試し

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

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