rust-quiz:032-or-pattern-guard.rs

问题

fn check(x: i32) -> bool {
    print!("{}", x);
    false
}

fn main() {
    match (1, 2) {
        (x, _) | (_, x) if check(x) => {
            print!("3")
        }
        _ => print!("4"),
    }
}

关键

  • match
    match不只是可以匹配模式,多模式匹配,甚至在后面加上条件。
    这里需要分类的是
    • 多模式之间,属于同一组
    • 条件检查作用于全部模式
    • 逻辑|之间,为短路关系

题解

从这里可以看出来,最后肯定是打印的4
其中(x, _)(_, x)分别要进行check(x)检测。
检测过程中会打印12
最终结果是124

答案

124

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!