Rust Match (模式匹配)
1. Match
当您面临众多选择时,使用 match 会比编写大量的 if...else 语句更加简单。
match 用于从多个代码块中选择一个来执行:
示例
fn main() {
let day = 4;
match day {
1 => println!("Monday"),
2 => println!("Tuesday"),
3 => println!("Wednesday"),
4 => println!("Thursday"),
5 => println!("Friday"),
6 => println!("Saturday"),
7 => println!("Sunday"),
_ => println!("Invalid day."),
}
}示例解析:
- 匹配变量 (
day) 仅被评估一次。 day变量的值将与每个“分支 (branch)”的值进行比较。- 每个分支以一个值开头,随后跟着
=>符号以及一个结果。 - 如果存在匹配项,则执行关联的代码块。
_用于指定当没有找到任何匹配项时需要运行的默认代码(类似于其他编程语言中的default)。- 在上述示例中,
day的值为4,这意味着它将打印 "Thursday"。
2. 多重匹配
您可以使用 | 运算符(逻辑或 OR)一次性匹配多个值:
示例
fn main() {
let day = 6;
match day {
1 | 2 | 3 | 4 | 5 => println!("Weekday"),
6 | 7 => println!("Weekend"),
_ => println!("Invalid day"),
}
}3. 带有返回值的 match
就像 if 语句一样,match 也可以返回一个值。
这意味着您可以将 match 的结果保存到一个变量中:
示例
fn main() {
let day = 4;
let result = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
4 => "Thursday",
5 => "Friday",
6 => "Saturday",
7 => "Sunday",
_ => "Invalid day.",
};
println!("{}", result);
}注意: 就像使用 if...else 时一样,match 各个分支返回的结果必须具有相同的类型。