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)
これらの正確な英語文字列を 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);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ