掌握Ruby世界就要先懂:迴圈與迭代
為甚麼會需要迴圈?
我想答案其實很簡單,因為重覆阿,主要因為在程式設計的資料呈現或是取得上,特別是陣列,會不斷透過相同的指令去重覆進行,所以就有了迴圈這樣的方法產生了。比如說要你依序取出特定的資料或是印出一些字串,你應該很懶得自己一樣樣的取出或印出吧,如果一個指令就能自動全部拿到或是幫你重覆執行相同動作的話,何樂而不為呢?
迴圈種類
在 Ruby 裡面的迴圈主要有以下五種:
for
while
loop
method
(Ruby 特有)迭代
(常用)
迴圈和迭代 Loop vs Iteration
很多時候這兩個類型定義其實很模糊,主要差別是:
- 迴圈: 執行完特定圈數就沒了
- 迭代: 是要針對每個對象去進行(或遍歷),也是一種迴圈的方式,會執行到每個對象都完成後才會停止。
For 迴圈 (for…in)
for in 迴圈使用的格式通常是 For 單數名 in 複數名
通常這兩者之間會用同樣的名字的單複數,比較可以明確表達你要取得一堆東西(複數)裡面的個別資料,你要取不相關的名稱也是可以。
1 | names = ["Sean", "Ken", "John", "Tom"] |
While 迴圈
使用這類的迴圈要小心不要變成無窮迴圈,要設定清楚結束條件,不然形成無權迴圈可是會讓你的程式執行卡住喔! 結束的條件會設定在 while 後面,後面再進行特定動作直到達成結束條件後結束。
1 | x = 0 |
邪惡分身 Evil Twins:
這邊一樣又出現了 ruby 的邪惡分身,非母語的比較不直觀,可以依照個人喜好選用。
- until = while not
- while = until not
1 | x = 0 |
loop 迴圈
與 while 類似,但是需要使用 break 去設定結束條件終止迴圈進行,可以選則使用 do..end 或是{ },這區間都稱作 block,兩者是同樣的作用方式可以互相替換,是 ruby 很重要的觀念喔!
1 | i = 0 |
method 迴圈
之前有講到在 ruby 中數字也算是物件,所以 number.method 應該可以很直觀的弄懂,”.”後面是接方法吧
.times{}
.upto()
.downto()
1 | #1 .times{} 執行特定次數 (大括號可換用 do...end) |
迭代式迴圈 (ruby 常用)
使用 each 的方法針對特定資料內所有元素進行迭代。
each
對每個元素each_with_index
可以同時處理每個元素跟索引值
1 | # each |
參考資料:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Sean's Blog!
評論
GiscusDisqus