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

前端之家收集整理的这篇文章主要介绍了为什么不排序或飞船(飞碟)运算符(<=>)在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语言设计师可能觉得为开发人员发明一个排序是一个惊喜,所以他们故意排除了比较运算符.

猜你在找的Ruby相关文章