Ruby中的 Loop方式


比較常使用的 Loop方式有九種

1. Loop
 最傳統也常見的 loop指令,指定起始的 number序號,每次執行過程中 number序號自動加上1,同時在前端加上 break if讓序號大於指定數字時中斷執行,這是七種方式中最不像 Ruby的 loop方式。
** Ruby自動產生的數字由 0開始,而不是 1
***中斷方式Break if




第二種方式 redo if

在這個例子裡面我們讓gets的時候,當發現到typo就會自動地跳回前端loop再 do一次,所以就很 next if 的功能,但他並不是skip,所以line_counter有繼續加總。





第三種方式 next if,當輸入typo的時候會跳過當次迴圈的執行內容,因此line_count並沒有增加。




2. until
 指定起始的 number 序號,使用 until number 大於指定數字持續的 do,每次執行過程中 number序號自動加上1。這種方式不需要加上 break,可以少打幾個字。



除了數字之外,until也可以用條件來決定flow。


3. While
 指定起始的 number 序號,使用 while number 小於指定數字持續的 do,每次執行過程中 number序號自動加上1。這種方式也不需要加上 break。或者用條件式處理:



4. times
 這大概是最簡短也最多人用的方式了,直接用 11.times do 這樣就搞定了,也是大家愛 ruby的原因。



5. each (array)
當我有一串數字或文字資料,依照清單中的數量一個一個接著執行。
例如:



6. each (range)
 跟list.each的差別在於,rage著重在一段連續的序列值的運用。可以使用兩個整數代數的區間差異來決定 loop的頻率。

**兩個數值中間放兩個點跟三個點的差異在於
 兩個點= count till  算到最後一個值
 三個點 = count before  算到最後一個值<color=red>之前<\color>




7.for
 for兩個數值之前 do,主要也是用在兩個代數中間的次數當作 loop的次數。



for也可搭配array使用


精簡寫法


8. upto (2012/12/01更新)

今天又看到兩種寫法,於此補充(可與for比較)


9. [ ].map do (2012/12/01更新)
依照一個清單中的資訊數量來當作執行的次數




詳見 %w用法

在Loop中如果要跳過某些 Array中的資料或序列的時候,可以用 NEXT IF

10. Array/Hash Each (2012/12/10更新)
hash.each { |x, y| puts "#{x}: #{y}" } 的寫法可以把Hash中的對應鍵值個別或同時呼叫出來執行一次,有多少組執行幾次,然後用 NEXT IF來跳開特定鍵值。


最後附上一個簡單的密碼產生器寫法,非常的不精簡,但比較容易讓剛接觸 Ruby的朋友們看得懂:)






留言