1

Equal to理解に助けが必要 -とはどう違いComparisonますか?

ケースはこちら

    x == y means `Equal to`

    x = 10 and y = 10

    puts "X and Y are equal" if x == y

    puts "X and Y are equal" if x <=> y

equal to をいつどこで使用できるかはわかっていますが、Comparison <=> はいつどこで使用できますか

ありがとう

4

3 に答える 3

0

等価演算子: == および !=

== 演算子は、等値または二重等号とも呼ばれ、両方のオブジェクトが等しい場合は 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 オペレーターの詳細については、このブログ投稿を参照してください。

于 2016-05-29T16:54:47.550 に答える
0

比較したい時は?-1, 0, 1 を返します。たとえば、ユーザーを名前で並べ替えると、次のようになります。

users_by_first = users.sort { |u1, u2| u1.fname <=> u2.fname }

これは、宇宙船のオペレーターについて尋ねる別の SO の質問です。

于 2012-08-08T01:27:52.993 に答える
0

<=> 一般的な比較演算子。レシーバーが引数より小さいか、等しいか、または大きいかに応じて、-1、0、または +1 を返します。

http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html

これは、並べ替えに役立ちます。

于 2012-08-08T01:28:07.840 に答える