for 迴圈

for迴圈需要設定一個範圍(例如:0到100),且每次都會執行指定動作。適合用在需要重複執行同一件事上面。

  
    for i in 0..100 do <span class="com"># 執行0到100</span>
      puts i <span class="com"># 每次顯示i,顯示0到100</span>
    end

    for i in 0...100 do <span class="com"># 當...三個點的時候,最後一次不執行。因此執行0到99</span>
      puts i <span class="com"># 每次顯示i,顯示0到99</span>
    end

    <span class="com"># do可省略</span>
  

times 迴圈

times迴圈需要指定執行次數,並在指定的次數內重複執行指令。如果需要偵測數列的話,需要另設變數。

  
    i = 0
    100.time do
      i += 1 <span class="com"># 同等於i = i + 1</span>
      puts i
    end
  

while & until 中止條件迴圈

whileuntil皆是需要設定中止條件的迴圈,如果中止條件設定不當的話,容易陷入「無限迴圈」。

while 迴圈

  
    i = 0
    while (i < 100) do<span class="com"># 當i小於100時重複執行迴圈</span>
      i += 1 <span class="com"># 每次執行i就加1</span>
      puts i
    end
    <span class="com"># do可省略</span>
  

until 迴圈

  
    i = 0
    i += 1 until i > 100 <span class="com"># 持續i加1,直到i大於100,也就是i等於101時停止。</span>
    puts i
  

loop迴圈

與一般迴圈不同是,不像for迴圈或times迴圈事先制定範圍,也不像whileuntil迴圈事先宣告停止條件,而是直接在迴圈內加入停止條件。

  
    i = 0 <span class="com"># 宣告變數</span>
    loop do
      puts i
      i += 1
      break if i >10 <span class="com"># 停止條件</span>
    end
  

next if跳過迴圈

在迴圈內加入next if的話,將可以跳過指定內容。

  
    for i in 1..10
      next if i % 2 == 0 <span class="com"># 跳過除以2後餘數為0的數字。</span>
      puts i
    end
  

each 迭代

迭代與迴圈不同的是,是掃瞄某個陣列後重複執行。

  
    nums = [10,20,30,40,50]
    nums.each do |i| <span class="com"># 讓i從掃描整個陣列</span>
      puts i
    end

    nums.each { |i| <span class="com"># do...end可用{}代替</span>
      puts i
    }