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敘述以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敘述的運作方式和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敘述可以和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"
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-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