Rust编程:入门、实战与进阶
上QQ阅读APP看书,第一时间看更新

3.3 match模式匹配

在2.3.4节中,我们使用了match模式匹配来处理枚举类型的值。match模式匹配也可用于流程控制,检查当前值是否匹配一系列模式中的某一个。模式可由字面值、变量、通配符和其他内容构成。每一个模式都是一个分支,程序根据匹配的模式执行相应的代码。

Rust要求match模式匹配是穷尽式的,即必须穷举所有的可能性,否则会导致程序错误。有一个处理方法是将通配符“_”放置在其他分支之后,通配符“_”会匹配上面没有指定的所有可能的模式。代码清单3-5中,第12行代码使用通配符处理变量age值小于0或大于100的情况。

代码清单3-5 match模式匹配

 1  fn main() {
 2      let age = 6;
 3
 4      match age {
 5          0 => println!("You are a baby."),
 6          1..=2 => println!("You are a toddler."),
 7          3..=4 => println!("You are a preschooler."),
 8          5..=9 => println!("You are a schoolchild."),
 9          10..=11 => println!("You are a preteen."),
10          12..=17 => println!("You are a teenager."),
11          18..=100 => println!("You are an adult."),
12          _ => (),
13      }
14  }
15
16  // You are a schoolchild.