The <=> operator does not handle booleans well.
true <=> true # => 0
true <=> false # => nil
Is this behavior intended by design or am I missing something? I expect:
true <=> false # => 1
false <=> true # => -1
Edit
This is what I was looking for:
false.to_i <=> true.to_i # => -1
The
<=>operator isn’t really a “combined boolean”; it is for ordering items of the same class, if they have an order defined. Numbers are ordered;1is greater than0and0is less than8675309. Boolean values don’t have an inherent order;trueisn’t greater thanfalseor vice versa.