gpt4 book ai didi

ruby - Ruby 的排序方法如何与组合比较(宇宙飞船)运算符一起工作?

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

这里是初级程序员,只是想了解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然后翻转结果?或者它是在解释 return-1 , 01具有相反的行为?

换句话说,为什么要像这样将变量放在 block 中:

array.sort { |b, a| b <=> a }

...结果与第一个示例中的排序模式相同?

最佳答案

a <=> b将返回 -1如果a属于b之前, 0如果它们相等,或者 1如果a应该遵循 b .
b <=> a将返回 -1如果b属于a之前, 0如果它们相等,或者 1如果b应该遵循 a .

由于您要颠倒顺序,因此输出应该颠倒,就像 -运营商,例如。 3-5-2 , 和 5-32 .

array.sort { |b, a| b <=> a }等于array.sort { |a, b| a <=> b }因为第一个参数在飞船之前,第二个参数在之后。 Ruby 不关心变量的名称是什么。

关于ruby - Ruby 的排序方法如何与组合比较(宇宙飞船)运算符一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600251/

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