gpt4 book ai didi

ruby - 为什么排序或宇宙飞船(飞碟)运算符 (<=>) 在 Ruby 中不能处理 bool 值?

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:18 25 4
gpt4 key购买 nike

在“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com