这里是初学程序员,只是想了解一下 Rubysort
使用 spaceship operator 的方法背后的过程<=>
。希望有人可以提供帮助。
在下面的:
array = [1, 2, 3]
array.sort { |a, b| a <=> b }
...我知道这sort
是一次比较一对数字,然后返回-1
ifa
属于 before b
,0
如果它们相等,或者1
if a
should follow b
。
但是在降序排序的情况下,像这样:
array.sort { |a, b| b <=> a }
...到底发生了什么?是否sort
仍然比较a <=> b
然后翻转结果?或者它是在解释 , 的sreturn
并且具有相反的行为?-1
0
1
换句话说,为什么要像这样将变量放在块中:
array.sort { |b, a| b <=> a }
...导致与第一个示例相同的排序模式?