iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Modern Web

Ruby新手村的礦工日記系列 第 13

[ Day 13 ] Ruby 今天我想來點迴圈跟迭代

  • 分享至 

  • xImage
  •  

什麼?!你我問什麼是迴圈?
迴圈就是在一個短短的程式中,連續執行多次重複的動作,執行的次數會依照程式碼設定的條件成立時才會結束迴圈。
所以我們可以透過迴圈,而不用一直寫重複的程式碼。

在 Ruby 中迴圈主要有幾種:

  1. while 迴圈
  2. for...in 迴圈
  3. times, upto, downto 方法
  4. 迭代(iteration)

While 迴圈

在使用while迴圈時,要得設定條件!
如果沒有設定或設定不當,很容易變成無限迴圈。
範例如下:

counter = 0 

while counter < 5
  puts "第#{counter}次"
  counter += 1
end

# 印出
# 第0次
# 第1次
# 第2次
# 第3次
# 第4次

如果用白話文講,意思是只要counter的值小於 5,就一直執行!
要注意 counter += 1 要記得設定,不然會變成無窮迴圈喔!

for...in 迴圈

假如有一個陣列,而且想把裡面的元素一個一個印出來,可以用 for...in。

month = [JAN, FEB, MAR, APR, MAY]

for month in months
  puts month
end

# 印出
# JAN
# FEB
# MAR
# APR
# MAY

times, upto, downto

times

times方法可以指定要跑幾次迴圈,如下:

3.times do
    puts "Hello World"
end

# 印出
# Hello World
# Hello World
# Hello World

這樣是不是很直覺啊!

upto

除了 times 可以用以外,還可以用 upto 正向從 1 數到 5 :

1.upto(5) do |i|
  puts "hi, ruby #{i}"
end

# 印出
# hi, ruby 1
# hi, ruby 2
# hi, ruby 3
# hi, ruby 4
# hi, ruby 5

downto

還可以反向從 5 數到 1:

5.downto(1) do |i|
  puts "hi, ruby #{i}"
end

# 印出
# hi, ruby 5
# hi, ruby 4
# hi, ruby 3
# hi, ruby 2
# hi, ruby 1

迭代

除了用 for...in 印出陣列中的東西,更常使用 each 來做:

names = ["Winni", "Ann", "Chaya"]

names.each do |s|
  puts s
end

# 印出
# Winni
# Ann
# Chaya

參考資料:

  1. 為你自己學 Ruby on Rails

上一篇
[ Day 12] Ruby 流程控制
下一篇
[ Day 14 ] Ruby 區塊一塊一塊~
系列文
Ruby新手村的礦工日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言