iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
Rust

Rust 後端入門系列 第 2

Day 2 Rust 基礎語法(1): let、if、match 與三種迴圈

  • 分享至 

  • xImage
  •  

接下來,我們來介紹 Rust 的基礎語法:變數宣告、條件控制以及三種迴圈。

變數宣告

我們可以使用 let 關鍵字來宣告變數,當單獨使用 let 時,產生的變數預設為不可變變數(immutable),如果嘗試修改不可變變數,將無法通過編譯。

若想要宣告可變變數,需另外加上 mut 關鍵字。

以下是一個範例:


fn main() {

// 宣告不可變變數

let x = 42;

// x = 100; // 錯誤寫法:編譯會出錯,因為嘗試修改不可變變數

// 可變變數

let mut y = 10;

y = 20; // 正常編譯,因為y是可變變數

println!("x: {}, y: {}", x, y); // 輸出:x: 42, y: 20

}

宣告變數時,可指定資料型態。


fn main(){

let x: i32 = 42; // 宣告一個32bit的整數

}

我們嘗試編譯這段程式碼,雖然可以通過編譯,但會觸發編譯器警告。

這是因為我們有宣告後未使用的變數,可以從這看到,Rust是相當嚴謹以及注重安全。

條件控制

Rust 的 if 敘述與其他語言類似,但Rust 也有跟其他語言不同的地方,例如使用 if 時不需要括號 () 包著條件。

如果你喜歡有括號,還是可以按照原來的風格,不會造成任何影響,也沒有編譯器警告。

此外,if 也可以作為表達式回傳數值。

表達式是什麼?讓我們看這個範例吧


fn main() {

let number = 7;

// 傳統的 if

if number > 0 {

println!("正數");

} else if number < 0 {

println!("負數");

} else {

println!("零");

}

// 作為表達式的 if 

let result = if number % 2 == 0 {

"偶數"

} else {

"奇數"

};

println!("數字 {} 是 {}", number, result); // 輸出結果:數字 7 是 奇數

}

以上是兩種 if 的使用方式,對比後,可以看到作為表達式的 if 讓程式變得更簡潔了。

模式匹配

match 是相當強大的模式匹配工具,作用類似其他語言的 switch,但使用時必須涵蓋所有可能,否則編譯會無法通過。

底下是使用範例


fn main() {

let day = 2;

match day {

1 => println!("星期一"),

2 => println!("星期二"),

3 => println!("星期三"),

_ => println!("其他日子"), // _ 是萬用字元,匹配其他情況,類似其他語言的 default

}

}

以上的程式輸出的結果是「星期二」

除了基本的資料結構,match 還可解構複雜資料結構。

以下是一個例子,讓 match 處理特殊的資料型態,Some(42) 表示裏面儲存42這個數值。


let value = Some(42);

match value {

Some(n) => println!("有值:{}", n),

None => println!("無值"),

}

輸出結果為有值:42。

有些人可能會覺得沒有必要用 Some、match 確認數值是否存在,但確認數值是否存在是相當重要的,嘗試讀取空值或None會導致錯誤。


在 Rust 中,有三種不同的迴圈,可以自行靈活運用在不用的場合。

迴圈

loop 建立迴圈,通常與 break 或 continue 一起使用,來控制迴圈。

擁有程式語言基礎的人應該都知道 break、continue的作用了。

簡單說明一下,break是直接結束迴圈,continue是跳過一次迴圈後面的內容。


fn main() {

let mut count = 0;

loop {

count += 1;

if count == 3 {

println!("到達 3,跳出迴圈");

break; // 跳出迴圈

}

println!("次數:{}", count);

}

}

另外,loop 還有作為表達式的使用方法,能返回 break 後附上的值。

範例:


let result = loop {

break 42;

};

println!("結果:{}", result); // 結果:42

條件迴圈

在 while 後的條件為 真(true) 時,將持續執行迴圈,直到條件不在成立。


fn main() {

let mut number = 5;

while number > 0 {

println!("倒數:{}", number);

number -= 1;

}

println!("離開迴圈!");

}

疊代迴圈

for 通常用於疊代範圍或陣列,這是使用方式:


fn main() {

// 疊代範圍

for i in 1..=5 { // 1..=5代表1到5。
// 如果把等號拿掉(也就是1..5)則代表1到4。

println!("數數兒:{}", i);

}

// 疊代陣列

let fruits = ["蘋果", "香蕉", "歐潤吉"];

for fruit in fruits.iter() {

println!("水果:{}", fruit);

}

}


上一篇
Day 1 安裝 Rust 與 Cargo介紹
下一篇
Day 3 Rust 基礎語法(2): 函數、結構體與模組
系列文
Rust 後端入門4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言