iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
1
自我挑戰組

毫無基礎學習 Ruby on Rails 的 甘苦心得系列 第 15

DAY 15 迴圈 迭代(Loop and Iteration)

  • 分享至 

  • xImage
  •  

還沒接觸學習程式前,看到這個笑話,當時還不知道笑點在哪裡,直到現在....我終於看懂了!!(這代表我有稍微進步嗎!?)

有一天,老婆打電話給他的工程師老公說:
「親愛的,下班幫我買十個包子,若看到賣西瓜的,就買一個。」
結果工程師下班之後只有買一個包子,老婆很疑惑的問:「怎麼只有買一個包子呢?」
老公說:「因為我看到賣西瓜的。」
這是語義不完整造成的誤解:
老婆的意思是:「買十個包子,若看到賣西瓜的,再多買一個西瓜。」
老公的解讀是:「買十個包子,若看到賣西瓜的,改成買一個包子。」

今天就來介紹 迴圈跟迭代吧

在 Ruby 的迴圈主要有幾種:

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

while 迴圈

句法

while conditional [do]
  code
end
counter = 1
while counter < 5 do
  puts counter
  counter += 1
end

#以這題來說 我們有一個counter = 1 的變數 條件為 值小於 5 就執行,所以會印出。
#=>
1
2
3
4

until

也可以使用until來寫

counter = 1
until counter > 5 do
  puts counter
  counter += 1
end

for..in 迴圈

假設你有一個陣列

numbers = [1,2,3,4,5]

#想要把他印出來

for number in numbers
  puts number
end
#=>
1
2
3
4
5

也可以這樣寫

for i in 1..5 do
  puts i
end
#=>
1
2
3
4
5

times, upto, downto 方法

times 意思是 可以指定要跑幾次 像這樣:

5.times do
  puts "哈囉你好"
end

#=>
哈囉你好
哈囉你好
哈囉你好
哈囉你好
哈囉你好

upto 跟 downto 範例:

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

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

迭代(iteration)

在 Ruby 中,大括號({ }) 和 do ... end 是可以交替使用的,前者通常用在單行的程式碼,後者用在多行的程式碼區塊。

arr = [1,2,3,4,5]
arr.each do |num|
  puts num 
end

#除了用 for..in 的方式把陣列裡的東西印出來,更常使用 each 方法來做這件事

hash 的迭代

hash = {apple: "pen", pen: "pineapple"}

# 疊代 key 和 value
hash.each do |key, value|
  puts "Key: #{key}, Value: #{value}"
end

# 疊代 key
hash.each_key do |key|
  puts key
end

# 疊代 value
hash.each_value do |value|
  puts value
end

參考資料:
為你自己學 Ruby on Rails
ruby loop


上一篇
DAY14 Ruby on Rails 中的 Gemfile
下一篇
DAY 16 Rails 介紹 與 MVC 架構
系列文
毫無基礎學習 Ruby on Rails 的 甘苦心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言