for + range
本集目標
用 for 迴圈搭配範圍(range)來重複執行,不用自己處理計數器。
正文
前兩集我們學了 loop 和 while,都需要自己手動管理計數器(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 會自動幫你宣告它。而且 i 在 for 後面的大括號 {} 裡面都可以使用。
要包含結尾呢?用 0..=5
fn main() {
for i in 0..=5 {
println!("{}", i);
}
}
0..=5 多了一個 =,表示「包含 5」。
比較一下
| 語法 | 意思 | 產生的數字 |
|---|---|---|
0..5 | 0 到 4 | 0, 1, 2, 3, 4 |
0..=5 | 0 到 5 | 0, 1, 2, 3, 4, 5 |
1..4 | 1 到 3 | 1, 2, 3 |
1..=4 | 1 到 4 | 1, 2, 3, 4 |
while 和 for 也能用 break
之前在 loop 裡面學過 break,其實 while 和 for 也能用。要注意的是,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..5讓i從 0 跑到 4(不含尾),0..=5則包含 5- 相比
while,for不用手動遞增計數器和檢查條件,更簡潔也更不容易出錯 break在loop、while、for裡面都可以使用