Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

for + range

本集目標

for 迴圈搭配範圍(range)來重複執行,不用自己處理計數器。

正文

前兩集我們學了 loopwhile,都需要自己手動管理計數器(count -= 1 之類的)。今天來學一個更簡單的寫法——for 迴圈。

for + 範圍

fn main() {
    for i in 0..5 {
        println!("{}", i);
    }
}

0..5 是什麼?

0..5 叫做範圍(range),意思是「從 0 開始,到 5 之前」。注意,不包含 5

所以 0..5 就是 0、1、2、3、4 這五個數字。

你可以把 for i in 0..5 讀成:「讓 i 依序從 0 跑到 4,每次做大括號裡的事。」

注意這裡的 i 不需要寫 let——for 會自動幫你宣告它。而且 ifor 後面的大括號 {} 裡面都可以使用。

要包含結尾呢?用 0..=5

fn main() {
    for i in 0..=5 {
        println!("{}", i);
    }
}

0..=5 多了一個 =,表示「包含 5」。

比較一下

語法意思產生的數字
0..50 到 40, 1, 2, 3, 4
0..=50 到 50, 1, 2, 3, 4, 5
1..41 到 31, 2, 3
1..=41 到 41, 2, 3, 4

whilefor 也能用 break

之前在 loop 裡面學過 break,其實 whilefor 也能用。要注意的是,break 只會跳出迴圈,不會跳出 if 之類的控制結構。所以下面這段程式碼裡,break 是跳出 for 迴圈,不是跳出 if

fn main() {
    for i in 0..10 {
        if i == 5 {
            println!("找到 5 了,不找了!");
            break;
        }
        println!("{}", i);
    }
}

跑起來只會印 0~4,遇到 5 就 break 跳出迴圈了。

重點整理

  • for i in 0..5i 從 0 跑到 4(不含尾),0..=5 則包含 5
  • 相比 whilefor 不用手動遞增計數器和檢查條件,更簡潔也更不容易出錯
  • breakloopwhilefor 裡面都可以使用