self <=> other -> -1 | 0 | 1 | nil[permalink][rdoc][edit]-
selfをotherと比較し、selfのほうが大きい場合に1、等しい場合に0、小さい場合に-1を返します。比較できない場合はnilを返します返り値を覚えるには、
比較できる例<=>を-に置き換えてみるとよいでしょう。x <=> yとx - yは符号が一致します。
比較できない例p 3.05 <=> 3.14 # => -1 p 1.732 <=> 1.414 # => 1 p 3.3 - 3.3 <=> 0.0 # => 0 # 正負の無限大も比較できる p 3.14 <=> Float::INFINITY # => -1 p 3.14 <=> -Float::INFINITY # => 1 p Float::INFINITY <=> -Float::INFINITY # => 1 # Complex オブジェクトでも虚部がゼロなら比較できる p 3.14 <=> 3.1+0i # => 1# NaN とは比較できない p 3.14 <=> 0.0/0.0 # => nil # 虚部がゼロでない複素数とは比較できない p 3.14 <=> 1i # => nil # 数値でないものは Float と比較できない p 3.14 <=> "3.1" # => nil