Menu
CoddyTech

match 文

CoddyのRustジャーニー「基礎」セクションの一部。レッスン 26/75。

match式を使うと、値を一連のパターンと照合し、どのパターンに一致するかに応じてコードを実行できます。

match 式の基本的な構造は次のとおりです:

match variable {
	pattern1 => expression1,
	pattern2 => expression2,
	// ... さらに多くのパターン
	_ => default_expression,
}

match キーワードの後には、テストしたい値を指定します。

match の各分岐は、パターンの後に => と実行するコードが続く構成です。

アンダースコア _ は、他のパターンに一致しなかったものすべてに一致するデフォルトのケースです。

例を示します:

let day = 3;
let day_name = match day {
	1 => "Monday",
	2 => "Tuesday",
	3 => "Wednesday",
	// ... さらにパターンが続く,
	_ => "Invalid day",
};

アーム内で複数行のコードを記述するには、ブロックを使います。

let day = 3;
let day_name = match day {
	1 => {
		println!("First day of the week!");
		"Monday"
	},
	2 => "Tuesday",
	// ... その他のケース
	_ => "Invalid day",
};

| を使うと、複数のパターンにマッチさせることができます:

let day = 3;
let day_type = match day {
	1 | 2 | 3 | 4 | 5 => "Weekday",
	6 | 7 => "Weekend",
	_ => "Invalid day",
};

Rustのmatch式は網羅的でなければなりません。つまり、考えられるすべての値をカバーする必要があります。コンパイラがこれをチェックしてくれます。

challenge icon

チャレンジ

初心者

月番号(1 は January、2 は February など)を受け取り、その月が属する季節を出力するプログラムを作成してください。ロジックには match 文を使用してください。

季節と対応する月は次のとおりです。

  • "Winter": December (12)、January (1)、February (2)
  • "Spring": March (3)、April (4)、May (5)
  • "Summer": June (6)、July (7)、August (8)
  • "Autumn": September (9)、October (10)、November (11)

これらの正確な英語文字列を season に代入し、たとえばプログラムが status = Spring を出力するようにしてください。

自分で試してみよう

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let month: i32 = input.trim().parse().unwrap();
    // 下にコードを書いてください
    let season = 

    // 下の行は変更しないでください
    println!("status = {}", season);
}
quiz icon腕試し

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

基礎のすべてのレッスン

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