MST

星途 面试题库

面试题:Rust中match表达式的基本使用及模式匹配技巧

请编写一段Rust代码,使用match表达式对一个包含i32类型的枚举进行模式匹配。枚举有三个变体,分别代表正数、负数和零。当匹配到正数时,返回其平方;匹配到负数时,返回其绝对值;匹配到零时,返回0。并解释一下match表达式中的通配符(_)如何使用以及它的作用。
18.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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
    }
}

通配符的作用主要有两点:

  1. 兜底匹配:确保match表达式涵盖所有可能情况,避免编译器提示未覆盖所有枚举变体的错误。
  2. 简化代码:当不需要关心特定值的具体内容时,使用通配符可简化模式匹配代码,不必为每种可能的值都写一个匹配分支。