Day 5:if 表達式與 match

學習目標

  • 理解 if 在 Rust 是「表達式」(會回傳值)
  • 學會用 branch 賦值給變數
  • 初識 match 的威力

今日重點

if 是表達式

let number = 7;
let description = if number > 0 {
    "positive"
} else if number < 0 {
    "negative"
} else {
    "zero"
};
println!("{} is {}", number, description);

每個 branch 回傳的型別必須一致。

match 表達式

let grade = 'B';
let description = match grade {
    'A' => "Excellent",
    'B' => "Good",
    'C' => "Average",
    'D' => "Below Average",
    'F' => "Failing",
    _ => "Invalid grade",  // 預設情況
};
println!("Grade {}: {}", grade, description);

簡單 if(無賦值)

if number >= 1_000_000 {
    println!("A large number");
}

練習

fn main() {
    let score = 85;
    let grade = if score >= 90 {
        'A'
    } else if score >= 80 {
        'B'
    } else if score >= 70 {
        'C'
    } else {
        'F'
    };
    println!("Score {} -> Grade {}", score, grade);
}
1. 用 if 表達式幫成績分級。 2. 改寫成用 match(提示:match score)。

自我檢查

  • 知道 if 在 Rust 是表達式、可以賦值
  • 會用 match 做跨多種情況的分支
  • 知道 match 一定要有 _ 或覆蓋所有情況

深入連結

  • The Book 第 6 章「The match Control Flow Construct」