让我先说一下我是Ruby的新手(非常明显).我正在学习Ruby on Codecademy,我对sort函数感到困惑.以用作为例:
list = [3,2,1,4]
list.sort { |a,b| b <=> a }
Run Code Online (Sandbox Code Playgroud)
我知道这将按降序返回数组 - [4,3,2,1].我完全不明白为什么.我知道当调用sort函数时,数组中的数字会被传递到函数中并进行比较,然后返回-1,0或1 - 但是接着是什么?例如,我猜这是首先要比较的东西:
[3 <=> 2] = 1
Run Code Online (Sandbox Code Playgroud)
但它对返回的1做了什么呢?在获得1后,阵列会是什么样子?
我很困惑,因为我不明白如何逆转比较(a <=> b与b <=> a)会改变数组的排序方向.除非我弄错了,否则"1 <=> 2"基本上不会返回"1来自2",而"2 <=> 1"则返回"2来自1"?这或多或少是相同的,但结果显然是不同的.