作为一名初学者,我想了解使用 Ruby 的 sort
方法时,如何使用太空船运算符 <=>
。希望有人能帮忙。
接下来是详细内容:
array = [1, 2, 3]
array.sort { |a, b| a <=> b }
我理解sort
一次比较一对数字,然后返回-1
如果a
在b
之前,0
如果它们相等,或者1
如果a
应该在b
之后。
但是,在降序排序的情况下,就像这样:
array.sort { |a, b| b <=> a }
…到底发生了什么?sort
仍然比较a <=> b
然后翻转结果吗?还是解释-1
,0
和1
的return
值时行为相反?
换句话说,为什么将变量放置在块中如下所示:
array.sort { |b, a| b <=> a }
在第一个示例中排序模式是否与结果相同?
sort
块 时神奇的$a
和$b
变量而感到困惑。 - mu is too short