重複的事就讓迴圈來吧
當要處理比較重複的事情時,我們總不可能一直重複寫一樣的程式碼,這時候我們就可以透過一個迴圈來幫我們處理這件事情。而 Rust 中的迴圈主要分為三種,分別是:
- loop
- while
- for
loop
loop 這個迴圈是一個無限迴圈,也就是說,只要沒有遇到 break 或 return,這個迴圈就會一直執行下去。
一個最簡單的 loop 迴圈如下:
1 | fn main() { |
但 loop 如果只單純這樣寫的話,好像不太實用。所以我們就可以利用昨天學到的 if...else
加上判斷的條件,來自己決定什麼時候該停止這個迴圈。
如果我們想要用一個迴圈,來處理從 1 數到 10,那麼就可以這樣寫:
1 | fn main() { |
先宣告一個可變數 count,並且設定初始值為 1,然後透過一個無限迴圈,來處理數字的問題,每次迴圈都會將 count 加 1,並且判斷 count 是否大於 10,如果大於 10,就會跳出迴圈。
while
while 迴圈本身就是一個條件迴圈,也就是說,但是跟 loop 迴圈給予條件判斷的方式不一樣。while 迴圈只要我們給他的條件成立的話,這個迴圈就會一直執行下去。
也就是說,while 迴圈的條件判斷是 false 的時候,才會跳出迴圈,而 loop 迴圈的條件判斷是 true 的時候,才會跳出迴圈。
1 |
|
while 迴圈的寫法和上面的 loop 寫法很像,只是把 if
改成了 while
,然後把 break
移除掉。
for
for 迴圈是一個迭代迴圈,也就是說,我們可以透過 for 迴圈來處理一個集合中的每一個元素。在處理資料的時候,一般還是使用 for 迴圈來處理還是比較常見的。
如果我們想要處理一個陣列中的每一個元素,例如一個一個印出來,那麼就可以這樣寫:
1 | fn main() { |
我們首先宣告一個陣列 arr,然後透過 for 迴圈來處理這個陣列中的每一個元素,並且將元素的值賦值給 i,然後印出 i 的值。iter()
是一個方法,可以幫助我們將陣列轉換成一個迭代器,然後我們就可以透過 for 迴圈來處理這個迭代器中的每一個元素。
又或者如果我們想要處理一個字串中的每一個字元,那麼就可以這樣寫:
1 | fn main() { |
如果我們想要跟前面的 loop 還有 while 一樣處理一個數字的範圍,例如從 1 到 10,那麼就可以這樣寫:
1 | fn main() { |
這裡的 ..
是一個範圍運算子,可以幫助我們產生一個範圍,然後我們就可以透過 for 迴圈來處理這個範圍中的每一個元素。
或者可以透過 ..=
來產生一個包含最後一個元素的範圍,這樣閱讀起來會更加直觀:
1 | fn main() { |
如果要倒著數的話,也可以透過 rev()
來倒著數:
1 | fn main() { |
以上就是迴圈的基本介紹與一些應用,大家可以試著練習看看,又可以更加偷懶(?)的應用 Rust 了。(▰˘◡˘▰)