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 中止條件迴圈
while
和until
皆是需要設定中止條件的迴圈,如果中止條件設定不當的話,容易陷入「無限迴圈」。
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
迴圈事先制定範圍,也不像while
或until
迴圈事先宣告停止條件,而是直接在迴圈內加入停止條件。
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
}