Menu
Coddy logo textTech

'if let' 式

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 4/66。

時には、特定のパターンを1つだけチェックしたいだけで、他のすべての可能性については気にしないことがあります。意味のあるアームが1つだけで、残りをすべてキャッチオール(_)にするような完全なmatch式を書くのは、冗長に感じられるかもしれません。Rustは、このような状況のためのより簡潔な代替手段としてif letを提供しています。

if let式を使用すると、パターンマッチングと条件論理を単一の読みやすいステートメントに組み合わせることができます。基本的な構文は次のとおりです。

if let pattern = value {
    // パターンが一致した場合に実行するコード
}

例えば、有効なアームが1つしかないmatchを記述する代わりに、

let number = 5;

match number {
    5 => println!("Found five!"),
    _ => (), // 他の値の場合は何もしない
}

if let を使用すると、より簡潔に記述できます:

let number = 5;

if let 5 = number {
    println!("Found five!");
}

if let 式は、パターンが一致したときにのみコードブロックを実行します。一致しない場合は何も起こりません。必要でない限り、明示的な "else" ケースは不要です。

challenge icon

チャレンジ

簡単

入力として数値を受け取ります。入力を読み取り、整数に変換し、if let 式を使用してその数値がちょうど 42 であるかどうかを確認してください。一致する場合は、"The answer!" と出力してください。一致しない場合は、何も出力しないでください。

要件:

  • if let 式を使用して、数値が 42 と等しいかどうかを確認する
  • 数値が 42 の場合、"The answer!" と出力する
  • それ以外の場合は、何も出力しない

入力: 1つの整数

出力: 数値が 42 の場合は "The answer!" を出力し、それ以外の場合は何も出力しない

自分で試してみよう

use std::io;

fn main() {
    // 入力を読み込む
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let number: i32 = input.trim().parse().expect("Please enter a valid number");
    
    // TODO: 以下にコードを書いてください
    // `if let` を使用して `number` が 42 に等しいか確認してください
    
}
quiz icon腕試し

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

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