在“Is it possible to sort a list of objects depending on if the individual object's response to a method?”中,我发现飞碟对 bool 值不起作用。
考虑:
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 没有规范的排序顺序有关,因为哪个先出现?但是,这对我来说听起来很弱。
这是 sort
中的错误吗?
最佳答案
bool 值没有自然顺序。
Ruby 语言设计者可能觉得为 bool 值发明一种排序方式会让开发人员大吃一惊,因此他们有意省略了比较运算符。
关于ruby - 为什么排序或宇宙飞船(飞碟)运算符 (<=>) 在 Ruby 中不能处理 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14816131/