Rust中的match表達式


示例程序:

use std::io;
use std::cmp::Ordering;

fn main() {
    let mut s = String::new();
    io::stdin().read_line(&mut s).unwrap();
    let num : i32 = s.trim().parse().unwrap();
    match num.cmp(&23) {
        Ordering::Less => println!("smaller"),
        Ordering::Greater => println!("bigger"),
        Ordering::Equal => println!("same"),
    }
}

上述程序會從命令行輸入一個整數(讀入到s並解析到)num,並判斷 num 和 23 的大小:

  • 若 num 小於 23,輸出 “smaller”;
  • 若 num 等於 23,輸出 “same”;
  • 若 num 大於 23,輸出 “bigger”。

std::cmp::Ordering 是標准庫中的一個枚舉類型,它擁有 Less、Greater 及 Equal 這3個變體。它們分別用來表示比較兩個數字的大小之后可能產生的3種結果。

cmp 方法能夠為任何可比較的值類型計算出它們比較后的結果。本例中的 cmp 方法接收了被比較值23的引用作為參數來與 num 進行比較,他會返回一個Ordering類型的變體。然后我們會給予該返回值的具體內容使用match表達式來決定下一步的代碼。

match表達式由數個 分支(arm) 組成,每個分支都包含一個用於匹配的 模式(pattern),以及匹配成功后要執行的相應的代碼。Rust會嘗試用我們傳入match表達式的值去依次匹配每個分支的模式,一旦匹配成功,它就會執行當前分支的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM