首页 > 解决方案 > Ruby 的组合比较运算符是如何工作的?

问题描述

关于stackoverflow的第一个问题:)

我正在学习 Codecademy 的 Ruby 课程,但我遇到了一些问题。

fruits = ["orange", "apple", "banana", "pear", "grapes"]

fruits.sort! {|first, second| second <=> first} 

print fruits

我不知道如何表达这个问题。在 Codecademy 上,任务是设置要在控制台上反向显示的数组。经过一番研究,我能够弄清楚。我了解它的工作原理以及将其放入代码中的顺序而不是为什么。我知道“<=>”比较两个对象,但是当我们不这样声明它们时,数组中的项目如何成为对象?

其次,当我们可以这样做时,以这种方式编写这段代码的目的是什么fruits.sort.reverse

标签: arraysrubysorting

解决方案


第一个问题:在其操作的各个点,该sort方法必须比较成对的对象以查看它们的相对顺序应该是什么。它通过应用您传递给 的块来进行比较sort,即{|first, second| second <=> first}. 不确定“当我们不这样声明数组中的项目时,它们如何成为对象?”是什么意思。ruby 中的所有数据都是一个对象,因此鉴于所有变量都是对象引用,因此不需要声明或转换。

第二个问题:是的,您可以这样做fruits.sort.reverse,但这需要在排序之后进行额外的工作才能进行反向操作。此外,reverse无法处理更复杂的排序任务,例如按性别和姓氏或头发颜色、身高和体重等多个标准对人员进行排序。编写自己的比较器可以处理相当复杂的排序。


推荐阅读