重複の可能性:
Ruby <=>(宇宙船)演算子とは何ですか?
なじみのないコードと演算子を見ました
@array << {:suffix=> substring, :index => i}
@array.sort! { |x,y| x[:suffix] <=> y[:suffix]}
私はそれにグーグルをすることはできません。何をし<=>
ますか?
重複の可能性:
Ruby <=>(宇宙船)演算子とは何ですか?
なじみのないコードと演算子を見ました
@array << {:suffix=> substring, :index => i}
@array.sort! { |x,y| x[:suffix] <=> y[:suffix]}
私はそれにグーグルをすることはできません。何をし<=>
ますか?
これは宇宙船のオペレーターで、Perlから借りたものです。左のオペランドが右のオペランドよりも小さい場合は-1を返し、右のオペランドが左よりも大きい場合は1を返し、それ以外の場合は0を返すため、一般的にソートに使用されます。
1 <=> 2 # => -1
2 <=> 1 # => 1
1 <=> 1 # => 0
特定のクラスに対して定義された比較を行います。trueの場合... < ...
は、を返し-1
、 trueの場合... == ...
は、を返し、trueの0
場合... > ...
は。を返します1
。
コアの数値クラスと文字列クラスの場合、-1、0、または1を返すのは比較演算子です。
理論的には、クラスは任意の演算子を定義して必要なことを実行できますが、これはソート時に使用されるメソッドになります。<=>
任意のアプリケーションクラスを注文する必要がある場合は、そのクラスを定義するのが理にかなっている場合があります。