'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" ケースは不要です。
チャレンジ
簡単入力として数値を受け取ります。入力を読み取り、整数に変換し、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 に等しいか確認してください
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。