4

重複の可能性:
Ruby <=>(宇宙船)演算子とは何ですか?

なじみのないコードと演算子を見ました

 @array << {:suffix=> substring, :index => i}
 @array.sort! { |x,y| x[:suffix] <=> y[:suffix]}

私はそれにグーグルをすることはできません。何をし<=>ますか?

4

3 に答える 3

5

これは宇宙船のオペレーターで、Perlから借りたものです。左のオペランドが右のオペランドよりも小さい場合は-1を返し、右のオペランドが左よりも大きい場合は1を返し、それ以外の場合は0を返すため、一般的にソートに使用されます。

1 <=> 2 # => -1
2 <=> 1 # => 1
1 <=> 1 # => 0
于 2012-11-18T17:08:48.057 に答える
4

特定のクラスに対して定義された比較を行います。trueの場合... < ...は、を返し-1、 trueの場合... == ...は、を返し、trueの0場合... > ...は。を返します1

于 2012-11-18T17:08:14.640 に答える
1

それは宇宙船オペレーターと呼ばれています。

コアの数値クラスと文字列クラスの場合、-1、0、または1を返すのは比較演算子です。

理論的には、クラスは任意の演算子を定義して必要なことを実行できますが、これはソート時に使用されるメソッドになります。<=>任意のアプリケーションクラスを注文する必要がある場合は、そのクラスを定義するのが理にかなっている場合があります。

于 2012-11-18T17:25:55.330 に答える