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

godme發表於2022-07-15
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 協議》,轉載必須註明作者和本文連結

相關文章