Day 3:函式入門

學習目標

  • 學會定義與呼叫函式
  • 理解「表達式 vs 陳述式」以及回傳值
  • 會用不同方式傳遞參數

今日重點

基本函式與回傳值

fn add(a: i32, b: i32) -> i32 {
    a + b  // 最後一行不加分號 = 回傳值
}

fn main() {
    let result = add(5, 3);
    println!("5 + 3 = {}", result);
}

關鍵概念:表達式 vs 陳述式

  • 陳述式(Statement):有分號,執行但不回傳值
  • 表達式(Expression):沒有分號,會回傳值
    fn add(a: i32, b: i32) -> i32 {
        let sum = a + b;  // 這是陳述式(有分號)
        sum               // 這是表達式(無分號),當回傳值
    }
    

無回傳值的函式(返回 ()

fn greet(name: &str) {
    println!("Hello, {}!", name);
}

練習

fn square(x: i32) -> i32 {
    x * x
}

fn main() {
    println!("5^2 = {}", square(5));
}
1. 寫一個 multiply(a, b) 函式並呼叫。 2. 故意把函式最後一行加上分號,觀察「回傳 ()」造成型別錯誤的訊息。

自我檢查

  • 知道函式最後一個「不加分號的表達式」就是回傳值
  • 能分辨陳述式與表達式
  • 能寫出帶參數和回傳值的函式