iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
自我挑戰組

Ruby and Rails 的二三事系列 第 2

Ruby and Rails 的二三事 - Day02 流程控制、迴圈與迭代

  • 分享至 

  • xImage
  •  

昨天講完變數與常數,今天就簡單的介紹一下流程控制、迴圈與迭代吧!
主要會針對 Ruby 和其他程式語言不同的地方。

流程控制

if...elsif...end

其他程式語言用的是 else if ,但是在Ruby是 elsif,別搞錯囉!

bmi = 20

if bmi < 18
  puts "太瘦了"
elsif bmi >= 18 && bmi <= 24
  puts "標準身材"
else
  puts "太胖了"
end

倒裝句 - 將 if 寫在後面

將上面的例子簡化:

if bmi < 18
  puts "太瘦了"
end

在Ruby的世界,這種if 區塊裡只有一行的,可以用像英文倒裝句的寫法,寫成:

  puts "太瘦了" if bmi < 18

迴圈與迭代

迴圈(loop):設定好要重複的次數或條件,然後執行
迭代(interate):對特定對象,通常是個陣列,的所有元素進行執行

在Ruby 的世界,迴圈的寫法相當多元:

  • while loop
  • for...in loop
  • times/ upto/ downto

while loop

多數程式語言都有的 while ,在Ruby 裡是寫成這樣的:

counter = 0

  while counter < 5
    puts "hi, #{counter}"
    counter += 1
  end

for...in loop

在 Javascript 裡也有的for..in,在Ruby 裡是寫成這樣的:

barks = ["meow", "won", "gar", "ker"]

for bark in barks
  puts bark
end

times/ upto/ downto

還記得昨天提到的,在Ruby的世界,幾乎所有的東西都是物件嗎?
咦?我還真的沒有提到阿?
上面提到的這三的方法,都是數字物件可以使用的,寫起來大概會像這樣:

  • times
5.times do
  puts "meow"
end
# meow
# meow
# meow
# meow
# meow
  • upto
1.upto(5) do |i|
  puts "won" * i
end
#won
#wonwon
#wonwonwon
#wonwonwonwon
#wonwonwonwonwon
  • downto
5.downto(1) do |i|
  puts "gar" * i
end
#gargargargargar
#gargargargar
#gargargar
#gargar
#gar

迭代

提到迭代,在處理陣列的時候,其他程式語言大多會想到:

let barks = ["meow", "won", "gar", "ker"]

for(i = 0; i < barks.length; i++){
    console.log(i)
}

但是在Ruby裡,更常使用 each 來處理,寫起來會像這樣:

barks = ["meow", "won", "gar", "ker"]

barks.each do |bark|
  puts bark
end

今天的內容好像有點少,是嗎?
我絕對不會說是因為我打到一半忘記存檔,
自己手賤按了重新整理
的關係呢!

鐵人賽,我們明天見!


上一篇
Ruby and Rails 的二三事 - Day01 變數與常數
下一篇
Ruby and Rails 的二三事 - Day03 Array and Hash
系列文
Ruby and Rails 的二三事19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言