ver*_*idd 6 ruby sorting comparison-operators
在这里开始编程,只是想sort在使用太空船操作员时理解Ruby 方法背后的过程<=>.希望有人能提供帮助.
在下面的:
array = [1, 2, 3]
array.sort { |a, b| a <=> b }
Run Code Online (Sandbox Code Playgroud)
......据我所知,sort在时间比较一对数,然后再返回-1,如果a前所属b,0如果他们是平等的,或者1如果a应该遵循b.
但是在按降序排序的情况下,如下所示:
array.sort { |a, b| b <=> a }
Run Code Online (Sandbox Code Playgroud)
......究竟发生了什么?是否sort仍比较a <=> b,然后翻转,结果呢?或者是解释return第-1,0并1具有相反的行为吗?
换句话说,为什么要将变量放在块中,如下所示:
array.sort { |b, a| b <=> a }
Run Code Online (Sandbox Code Playgroud)
...导致与第一个例子中相同的排序模式?
a <=> b-1如果a属于 before b,0如果它们相等,或者1如果a应该 follow ,则将返回b。如果属于 before ,如果它们相等,或者是否应该遵循,
b <=> a将返回-1ba01ba。
由于要颠倒顺序,因此输出也应该颠倒,就像-运算符一样。3-5是-2,并且5-3是2。
array.sort { |b, a| b <=> a }等于,array.sort { |a, b| a <=> b }因为第一个参数在飞船之前,第二个参数在飞船之后。Ruby 不关心变量的名称是什么。