條件

條件式 在 Ruby

22 個練習

關於 條件式

Ruby 有種東西叫做流程控制運算式,用來控制程式的執行方式,它們會取用真值或假值。 有些運算子可以用來產生真值或假值,這些運算子稱為比較運算子。

主要有兩個控制運算式,用來決定哪些程式碼會執行、哪些不會。 也就是決定會執行哪個分支。

這兩個就是:if和unless運算式。

比較運算子

比較運算子用來比較值,並回傳true或false值。 以下這些運算子要求被比較的兩個值型別相同。 如果兩個值的型別不同,編譯器就會拋出錯誤。 以下是這些運算子的列表,以及它們產生true時的範例:

方法 說明 範例
< 小於 4 < 5
<= 小於或等於 4 <= 4
> 大於 3 > 1
>= 大於或等於 2 >= 2

和前面提到的運算子不同,等於與不等於運算子可以用來比較任何型別的值。 ==運算子用來檢查兩個值是否相等,而且會一併檢查值的型別。 !=的運作方式相同,但如果兩個值不相等就會回傳true,相等則回傳false。 以下是等於與不等於運算子的列表,以及它們產生true時的範例:

方法 說明 範例
== 等於 4 == 4
!= 不等於 5 != 4

組合比較運算子

組合比較運算子(有時也稱為太空船運算子)是一種特殊的比較運算子。 它特殊的地方在於,它不會回傳真值或假值,而是回傳一個數字。 它的寫法是<=>,用來比較兩個值。 如果左邊的值大於右邊的值,它會回傳1;如果左邊的值小於右邊的值,會回傳-1;如果兩個值相等,則回傳0。

1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1

if 敘述

if敘述用來檢查某個條件是否「為真」或「為假」。 如果條件為真,if 敘述裡的程式碼就會執行。 if敘述以end關鍵字結尾。

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

unless 敘述

unless敘述的運作方式和if敘述非常類似,但如果條件為假,它就會執行unless敘述裡的程式碼。

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

else 敘述

else敘述可以和if敘述搭配使用。 如果if分支沒有被執行,就會執行else敘述。

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
else
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

「串接式 if」敘述

elsif敘述可以和 if 敘述搭配使用。 如果 if 分支沒有被執行,而且 elsif 敘述的條件為真,就會執行elsif敘述。 elsif 敘述可以串接在一起,第一個為真的條件會被執行。 if 敘述的最後也可以加上 else 敘述,當前面所有敘述的條件都不成立時,它就會執行。

value = 1
if value == 0
  "1 is equal to 0"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"

if 和 unless 當作後綴

if 和 unless 敘述也可以當作[後綴][if-as-suffix]使用,當你想在條件為真時只執行單行程式碼,這樣寫很方便。 做法是把 if 或 unless 敘述放在你想執行的程式碼後面。

value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1

"1 is not equal to 1" unless value == 1
# => nil
透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 條件式

練習已鎖定

再解鎖 10 個練習,就能練習 條件式