Menu
CoddyTech

'match' 式

CoddyのRustジャーニー「論理とフロー」セクションの一部。レッスン 1/66。

match式はRustの強力なパターンマッチング機能です。値をさまざまなパターンと照合し、どのパターンに一致するかに応じてコードを実行できます。複数の条件を簡潔に扱える、より高度なif文だと考えてください。

match式の基本的な構文は次のとおりです。

match value {
    pattern1 => code_to_run,
    pattern2 => code_to_run,
    _ => default_code,
}

match内の各行は「アーム」と呼ばれます。=>は、パターンと、そのパターンに一致したときに実行されるコードを区切ります。アンダースコア_は、あらゆるものに一致する特別なワイルドカードパターンです。他のパターンに一致しない値をすべて受け止める「網羅パターン」のようなものです。

数値を確認する簡単な例を次に示します。

let number = 2;

match number {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Other"),
}

Rustでは、match式は網羅的でなければなりません。つまり、考えられるすべての値を処理する必要があります。そのため、ワイルドカードの_は非常に重要です。明示的にマッチさせていないすべてのケースを網羅できます。

matchは式なので、値を生成することもできます。関数内で最後に評価される式である場合、マッチしたアームの値が関数の戻り値になります。

fn day_name(day: i32) -> String {
    match day {
        1 => String::from("Monday"),
        2 => String::from("Tuesday"),
        _ => String::from("Another day"),
    }
}

この関数はStringを返すため、各アームではString::fromまたは.to_string()を使って、テキスト(&str)をStringに変換します。

challenge icon

チャレンジ

簡単

numを受け取り、その数値に基づいた文字列の説明を返す関数describe_numberを作成してください。

match式を使用して、異なる数値に対して異なる説明を返してください。

条件:

  • numが0の場合、"zero"を返します
  • numが1の場合、"one"を返します
  • numが2の場合、"two"を返します
  • numが3の場合、"three"を返します
  • それ以外の数値の場合、"many"を返します

パラメータ:

  • num (i32): 説明する数値

戻り値: 数値の文字列による説明 (String)

自分で試してみよう

fn describe_number(num: i32) -> String {
    // ここにコードを書いてください
}
quiz icon腕試し

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

論理とフローのすべてのレッスン

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