为什么不排序或飞船(飞碟)运算符(<=>)在Ruby中的布尔工作?

在“ Is it possible to sort a list of objects depending on if the individual object’s response to a method?”中,我发现飞碟在布尔上不起作用.

考虑:

Ruby 1.8.7:

[true,false].sort # => undefined method `<=>' for true:TrueClass (NoMethodError)
true <=> false     # => undefined method `<=>' for true:TrueClass (NoMethodError)

Ruby 1.9.3:

[true,false].sort # => comparison of TrueClass with false Failed (ArgumentError)
true <=> false     # => nil
true <=> true      # => 0
false <=> true     # => nil

它可能与true和false有关,没有规范的排序顺序,因为哪个是第一个?但是,对我来说听起来很弱.

这是一个排序错误吗?

解决方法

布尔值没有自然排序.

Ruby语言设计师可能觉得为开发人员发明一个排序是一个惊喜,所以他们故意排除了比较运算符.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...