昨天講完變數與常數,今天就簡單的介紹一下流程控制、迴圈與迭代吧!
主要會針對 Ruby 和其他程式語言不同的地方。
其他程式語言用的是 else if ,但是在Ruby是 elsif,別搞錯囉!
bmi = 20
if bmi < 18
puts "太瘦了"
elsif bmi >= 18 && bmi <= 24
puts "標準身材"
else
puts "太胖了"
end
將上面的例子簡化:
if bmi < 18
puts "太瘦了"
end
在Ruby的世界,這種if 區塊裡只有一行的,可以用像英文倒裝句的寫法,寫成:
puts "太瘦了" if bmi < 18
迴圈(loop):設定好要重複的次數或條件,然後執行
迭代(interate):對特定對象,通常是個陣列,的所有元素進行執行
在Ruby 的世界,迴圈的寫法相當多元:
多數程式語言都有的 while ,在Ruby 裡是寫成這樣的:
counter = 0
while counter < 5
puts "hi, #{counter}"
counter += 1
end
在 Javascript 裡也有的for..in,在Ruby 裡是寫成這樣的:
barks = ["meow", "won", "gar", "ker"]
for bark in barks
puts bark
end
還記得昨天提到的,在Ruby的世界,幾乎所有的東西都是物件嗎?咦?我還真的沒有提到阿?
上面提到的這三的方法,都是數字物件可以使用的,寫起來大概會像這樣:
5.times do
puts "meow"
end
# meow
# meow
# meow
# meow
# meow
1.upto(5) do |i|
puts "won" * i
end
#won
#wonwon
#wonwonwon
#wonwonwonwon
#wonwonwonwonwon
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
今天的內容好像有點少,是嗎?
我絕對不會說是因為我打到一半忘記存檔,的關係呢!
自己手賤按了重新整理
鐵人賽,我們明天見!