iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

自我挑戰Ruby系列 第 13

Day 13 - 流程控制2

  • 分享至 

  • xImage
  •  

二分法

之前介紹了簡單的if,當然除了if我們當然會搭配else,if…else(如果…不然就…),

像之前的例子:如果生病了就在家休息可以變成。

如果生病了就在家休息,不然就去上學。

因為只有生病了可以在家休息。如果不想去學校,當然不可能在家,理所當然要去學校。

如果不想考試,也是理所當然不可能在家。

所以我們可以寫成:

situation = "want to stay at home"
if situation == "sick"
    puts "stay at home"
else
    puts "go to school"
end

這個情況就會變成,只要生病了就可以在家休息,但其他原因就只能去學校。

像狀態是想要在家,那這樣子就只能去上學。

三元運算子

三元運算子(Ternary Operator),主要是一個條件後面會接著一個問號(?),

且帶著兩個結果,會以冒號區隔兩種結果,然而當如果條件成立的話(表達為true時),

會實行前面的結果,而當如果條件不成立的話(表達為false時),會實行後面的結果。

表示為 a ? b : c ,其中a是一個條件判斷句。

像上面的例子我們可以寫成:

situation = "want to stay at home”

situation == "sick" **?** "stay at home" **:** "go to school”

多條件(if…elsif...else…)

當如果有多條件的時候,我們會使用if…elsif...else…,

但請注意這邊elsif 不是elseif,注意沒有多一個e。

例如今天我要出們運動,但我會因為天氣的關係,導致我選擇不同的運動,

如果是晴天,我會出門跑步,

如果是陰天,我會騎腳踏車,

如果是雨天,我會去健身房,

如果是其他天氣(打雷或下冰雹…等總之不是上述這三種天氣),就會在家。

weather = "hail"

if weather == "sunny"

    puts "Running"

elsif weather == "cloudy"

    puts "Cycling"

elsif weather == "rainy"

    puts "Working out at the gym"

else

    puts "stay at home"

end

由於現在天氣是冰雹(hail),所以只能留在家裡。

(case…when…)

之前說過多條件的時候,可以使用case…when…成為第二種方法。

weather = "hail"

case weather

when "sunny"

    puts "Running"

when "cloudy"

    puts "Cycling"

when "rainy"

    puts "Working out at the gym"

else

    puts "stay at home"

end

Day 13 結語

其實在條件判斷式內,很常忘記寫成兩個等號(==),常常會寫成一個等號(=),

把原本要做比較的東西,變成指定的。我覺得這是我每次在練習的時候最常發生的通病。

但我覺得有問題才會是記起教訓的方法之一,犯錯才會讓自己印象深刻,更能時時刻刻謹記著。


上一篇
Day 12 - 流程控制1
下一篇
Day 14 - 流程控制3
系列文
自我挑戰Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言