MST

星途 面试题库

面试题:Rust中match表达式处理枚举类型的技巧应用

定义一个包含多个变体的枚举类型`TrafficLight`,有`Red`、`Yellow`、`Green`变体。使用`match`表达式实现根据不同的枚举变体打印出相应的交通灯状态描述,例如`Red`对应`停止`,`Yellow`对应`准备`,`Green`对应`通行`。并解释在这个过程中`match`表达式的模式匹配规则。
35.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义TrafficLight枚举类型
enum TrafficLight {
    Red,
    Yellow,
    Green,
}

fn main() {
    // 假设这里有一个TrafficLight实例
    let light = TrafficLight::Red;

    // 使用match表达式
    match light {
        TrafficLight::Red => println!("停止"),
        TrafficLight::Yellow => println!("准备"),
        TrafficLight::Green => println!("通行"),
    }
}

match表达式的模式匹配规则

  1. 穷尽性match表达式必须涵盖枚举类型的所有可能变体。在上述例子中,TrafficLightRedYellowGreen三个变体,match表达式中必须对这三个变体都进行匹配,否则编译会报错。这确保了程序在运行时不会因为未处理的变体而导致未定义行为。
  2. 顺序性match表达式从上到下依次匹配模式。一旦找到一个匹配的模式,就会执行与之关联的代码块,并且不会再继续匹配后续的模式。例如,如果先匹配到TrafficLight::Red,就会执行println!("停止"),而不会再检查YellowGreen的模式。
  3. 精确匹配:模式必须与被匹配的值精确匹配。在枚举类型的情况下,模式必须是枚举的某个具体变体。例如,TrafficLight::Red就是精确匹配TrafficLight枚举中的Red变体。