面试题答案
一键面试enum NumberType {
Positive(i32),
Negative(i32),
Zero,
}
fn handle_number(num_type: NumberType) -> i32 {
match num_type {
NumberType::Positive(n) => n * n,
NumberType::Negative(n) => if n < 0 { -n } else { n },
NumberType::Zero => 0,
}
}
通配符(_)的使用及作用
在match
表达式中,通配符_
用于匹配任何值。例如,若上述NumberType
枚举添加了新的变体,但又不想处理该变体时,可以使用通配符:
fn handle_number_with_wildcard(num_type: NumberType) -> i32 {
match num_type {
NumberType::Positive(n) => n * n,
NumberType::Negative(n) => if n < 0 { -n } else { n },
NumberType::Zero => 0,
_ => -1, // 匹配其他未处理的变体,这里简单返回 -1
}
}
通配符的作用主要有两点:
- 兜底匹配:确保
match
表达式涵盖所有可能情况,避免编译器提示未覆盖所有枚举变体的错误。 - 简化代码:当不需要关心特定值的具体内容时,使用通配符可简化模式匹配代码,不必为每种可能的值都写一个匹配分支。