iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
Rust

Rust 30 天養成計畫:從零到 CLI 專案系列 第 4

Day 4:函數與表達式

  • 分享至 

  • xImage
  •  

Rust的函數用fn宣告,它強調「回傳值」與「表達式」的使用方式。此外,Rust也建議函數名稱使用 snake_case(底線小寫)。

1. 基本函數

fn main() {
    println!("Hello from main!");
    another_function();
}

fn another_function() {
    println!("Hello from another function!");
}

輸出:

Hello from main!
Hello from another function!

2. 帶參數的函數
Rust的函數參數必須標明型別,否則無法編譯。

fn main() {
    print_number(10);
}

fn print_number(x: i32) {
    println!("The number is: {}", x);
}

輸出:

The number is: 10

3. 有回傳值的函數
函數回傳值使用 -> 指定型別,最後一行表達式(沒有分號)會自動當作回傳值。

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

fn add(a: i32, b: i32) -> i32 {
    a + b   // 沒有分號 → 表達式,作為回傳值
}

輸出:

5 + 7 = 12

4. 表達式與語句
在 Rust 中,語句 (statement) 代表執行一個動作,不會產生值,表達式 (expression) 則會回傳一個值,可以用來指定給變數。

fn main() {
    let y = { 
        let x = 3;
        x + 1   // 沒有分號 → 表達式,結果是 4
    };
    println!("y = {}", y);
}

輸出:

y = 4

在 Rust 中,幾乎所有東西都是表達式,包括 if 與 match,這和 C/C++ 不太一樣。

5. 學習心得與補充
今天學到的函數和表達式讓我更清楚Rust的程式架構。和C/C++ 相比,Rust要求函數的參數型別一定要寫清楚,讓程式更安全也更容易閱讀。最讓我感到新奇的是表達式的概念,在其他語言我習慣用 return來回傳值,但在Rust中只要把最後一行寫成沒有分號的表達式,它就會自動當作回傳值,讓程式碼更簡潔。雖然剛開始會不太習慣,但發現不同語言間這些微小的不同處正是讓我感到有趣的部分。加上Rust 把if和match也設計成表達式,讓我對這個語言有更深的了解,也激起我對這個語言更多的好奇。


上一篇
Day 3:資料型別與型別推導
下一篇
Day 5:控制流程
系列文
Rust 30 天養成計畫:從零到 CLI 專案5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言