Menu
Coddy logo textTech

'match' 式

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 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式は網羅的(exhaustive)である必要があります。つまり、考えられるすべての値を処理しなければならないということです。そのため、ワイルドカードの_は非常に重要です。これにより、明示的に一致しなかったすべてのケースを確実にカバーできます。

challenge icon

チャレンジ

簡単

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

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

条件:

  • num0の場合、"zero"を返します
  • num1の場合、"one"を返します
  • num2の場合、"two"を返します
  • num3の場合、"three"を返します
  • それ以外の数値の場合、"many"を返します

パラメータ:

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

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

チートシート

match式は、値をさまざまなパターンと比較し、どのパターンが一致したかに基づいてコードを実行します:

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

match内の各行は「アーム(arm)」と呼ばれます。=>は、パターンとそのパターンが一致したときに実行されるコードを区切ります。

例:

let number = 2;

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

アンダースコア_は、他のパターンでカバーされていないあらゆるものに一致するワイルドカードパターンです。match式は網羅的(exhaustive)でなければなりません。つまり、考えられるすべての値を処理する必要があります。

自分で試してみよう

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

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

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