手记

【金秋打卡】第6天 Rust if let 和 while let 匹配

课程章节: 第4章 Rust 流程控制 4-8 if_let语法糖 4-9 while_let语法糖

课程讲师叶枭

课程内容:

今天学习的内容是 Rust 中的 if-letwhile-let 语法糖。

if let 是模式匹配的语法糖,如果只需要匹配一种模式,就可以使用它,而不用使用 match

下面分别使用 match 和 if let 来实现一个功能,只打印枚举中的字母A:

enum Alphabet {
    A,
    B,
}

fn main() {
    let letter = Alphabet::A;

    match letter {
        Alphabet::A => println!("字母A"),
        _ => (),
    }
    // 使用 if let 更简洁一些
    if let Alphabet::A = letter {
        println!("字母A");
    }
}

if let 还可以用于匹配带有参数的枚举。比如,定义一个枚举,它的一个成员 Char 可以传入字符参数。当传入的字符匹配时,就执行对应的逻辑:

enum Symbol {
    Char(char),
    Number,
}

fn main() {
    let letter = Symbol::Char('A');
    
    if let Symbol::Char(x) = letter {
        println!("{}", x);
    }
}

while let

它的意思是当模式匹配成功时候,while 循环会一直循环下去。如下,如果 letter 的值为 Alphabet::A,即匹配到了,则循环会一直进行下去。

enum Alphabet {
    A,
    B
}

fn main() {
    let letter = Alphabet::A;
    
    while let Alphabet::A = letter {
        println!("字母A");
    }
}

课程收获

这节课学习了 Rust 中的模式匹配的两个语法糖,if letwhile let,前者用的非常多,可以简化模式匹配的用法。后者很少用到。

0人推荐
随时随地看视频
慕课网APP