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 式は網羅的でなければならず、考えられるすべての値をカバーする必要があります。コンパイラーがこれをチェックしてくれます。
チャレンジ
初心者月番号(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)
自分で試してみよう
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);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ