オペレーターは<=>
ブール値をうまく処理しません。
true <=> true # => 0
true <=> false # => nil
この動作は設計によるものですか、それとも何かが足りないのですか?私が期待する:
true <=> false # => 1
false <=> true # => -1
編集 これは私が探していたものです:
false.to_i <=> true.to_i # => -1
オペレーターは<=>
ブール値をうまく処理しません。
true <=> true # => 0
true <=> false # => nil
この動作は設計によるものですか、それとも何かが足りないのですか?私が期待する:
true <=> false # => 1
false <=> true # => -1
編集 これは私が探していたものです:
false.to_i <=> true.to_i # => -1
<=>
演算子は実際には「結合ブール」ではありません。順序が定義されている場合、同じクラスのアイテムを注文するためのものです。番号は注文されています。より大きいおよびより小さい。ブール値には固有の順序はありません。より大きい、またはその逆ではありません。1
0
0
8675309
true
false
それらは同じクラスではありません。true
はのシングルトンですがTrueClass
、false
はのシングルトンですFalseClass
。true <=> true
リンゴとオレンジ(または、場合によっては、同じリンゴを持つリンゴ)を比較しています。
好奇心のために、なぜあなたtrue <=> false
は等しくなければならないと思います1
か?編集:sawaによってそれに殴られた