Rust에서 match 표현식에서 사용하는 _ (언더스코어)와 other (임의의 변수명)의 차이점은 다음과 같습니다.
_ (언더스코어) - 완전히 무시하는 패턴match dice_roll {
3 => add_fancy_hat(),
7 => remove_fancy_hat(),
_ => reroll(), // 어떤 값이 와도 실행됨 (변수로 저장 안 함)
}
_는 "모든 나머지 경우"를 뜻하는 와일드카드 패턴입니다._ 자체는 값을 저장하지 않습니다. 즉, reroll()을 실행하되, dice_roll의 값을 변수로 사용하지 못합니다.other (임의의 변수명) - 값을 저장하는 패턴match dice_roll {
3 => add_fancy_hat(),
7 => remove_fancy_hat(),
other => println!("Got a different number: {}", other), // 값을 저장하고 사용 가능
}
_ 대신 other처럼 변수를 사용하면, 그 값을 저장해서 활용할 수 있습니다.dice_roll이 3이나 7이 아니면, other에 해당 값이 저장되며, println!에서 사용할 수 있습니다.| 패턴 | 역할 | 값 저장 가능 여부 |
|---|---|---|
_ | 어떤 값이 와도 매칭되지만, 값은 무시함 | ❌ (사용 불가) |
other (변수) | 어떤 값이 와도 매칭되고, 값을 변수에 저장 | ✅ (사용 가능) |
_를 쓰고 언제 other을 써야 하나?_ 사용 → "이 값 신경 안 씀"예제:
match dice_roll {
1 => println!("Got a 1!"),
6 => println!("Got a 6!"),
_ => println!("Got something else!"), // 값 필요 없음
}
match dice_roll {
1 => println!("Got a 1!"),
6 => println!("Got a 6!"),
other => println!("Got a {}", other), // 값 필요함
}