gpt4 book ai didi

ruby - ruby 的排序方法是怎么回事?

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

以下代码中'a'和'b'分别代表什么,<=>又是如何表示的?工作?

list = [1,2,3,4,5]
list.sort { |a,b| b <=> a }

#=> [5,4,3,2,1]

最佳答案

ab代表一对元素。它可以是从您的原始列表中取出的任意两个。 <=>通常被称为宇宙飞船运算符(operator)。如果两项相等,则返回 0,如果左边一项较小,则返回 -1,如果右边一项较小,则返回 1。

有关 the spaceship operator in the Ruby API docs 的更多信息.这是 Fixnum 上的文档,因为那是您的示例中的内容,但您也可以在那里查看 Float、String 等的定义。

更新: sort函数期望给它的 block 遵循与宇宙飞船运算符(operator)相同的行为。如果第一个参数,a应该首先排序,应该返回-1;如果是第二个参数,b应首先排序,应返回 1;等等。所以在 list.sort { |a,b| a + b } 的例子中你告诉 sort 第二个参数每次都更大,因为 a + b对于该列表中的每个可能组合都大于 1。那么当你得到 [5,3,1,4,2] 时你会看到什么基本上是元素传递到 block 的顺序的产物,并且在 Ruby 实现中可能不稳定。

关于ruby - ruby 的排序方法是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249775/

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