等価演算子: == および !=
== 演算子は、等値または二重等号とも呼ばれ、両方のオブジェクトが等しい場合は true を返し、そうでない場合は false を返します。
"koan" == "koan" # Output: => true
!= 演算子、別名不等式または bang-tilde は、== の反対です。両方のオブジェクトが等しくない場合は true を返し、等しい場合は false を返します。
"koan" != "discursive thought" # Output: => true
同じ要素を異なる順序で持つ 2 つの配列は等しくないことに注意してください。同じ文字の大文字バージョンと小文字バージョンは等しくありません。
異なる型 (integer と float など) の数値を比較する場合、それらの数値が同じであれば、== は true を返します。
2 == 2.0 # Output: => true
比較演算子
他のオブジェクトよりも大きいか小さいかという点で (それらの間で) 比較できる数値や文字列などのオブジェクトは、宇宙船メソッドとも呼ばれる <=> メソッドを提供します。2 つのオブジェクトを比較する場合、<=> は、最初のオブジェクトが 2 番目のオブジェクトより小さい (a < b) 場合は -1 を返し、等しい場合 (a == b) は 0 を返し、最初のオブジェクトが 2 番目のオブジェクトより大きい場合 (a == b) は 1 を返します ( a > b)。
5 <=> 8 # Output: => -1
5 <=> 5 # Output: => 0
8 <=> 5 # Output: => 1
Integer、Float、Time、String など、ほとんどの比較可能またはソート可能なオブジェクト クラスには、Comparable という mixin が含まれています。これは、次の比較演算子を提供します: < (より小さい)、<= (より小さいか等しい)、== (等しい) 、> (より大きい)、>= (以上)。これらのメソッドは、ボンネットの下で宇宙船オペレーターを使用します。
次の例のように、比較演算子は上記のすべてのクラスのオブジェクトで使用できます。
# String
"a" < "b" # Output: => true
"a" > "b" # Output: => false
# Symbol
:a < :b # Output: => true
:a > :b # Output: => false
# Fixnum (subclass of Integer)
1 < 2 # Output: => true
2 >= 2 # Output: => true
# Float
1.0 < 2.0 # Output: => true
2.0 >= 2.0 # Output: => true
# Time
Time.local(2016, 5, 28) < Time.local(2016, 5, 29) # Output: => true
異なるクラスの数値を比較する場合、比較演算子は暗黙的に単純な型変換を実行します。
# Fixnum vs. Float
2 < 3.0 # Output: => true
2.0 > 3 # Output: => false
Ruby オペレーターの詳細については、このブログ投稿を参照してください。