2014-03-25 123 views
0

我将介绍组合比较运算符背后的逻辑,它能够颠倒数组的排序顺序。加入这行代码以相反的顺序对数组进行排序

books = ["Charlie and the Chocolate Factory", "War and Peace", "Utopia", 
"A Brief History of Time", "A Wrinkle in Time"] 

books.sort! { |firstBook, secondBook| secondBook <=> firstBook } 

我的问题是,为什么我就不能只是调用:例如,我可以扭转以下数组的顺序

books.reverse! 

在这个数组上得到相反的顺序?

+1

问题不明确。 –

+2

“为什么我不能打电话”你*能够做到这一点。你的问题是什么? –

+0

我想我只是更加困惑,为什么.reverse不会按相反的顺序对数组进行排序。 – Clayton

回答

7

reverse只是颠倒排列的顺序,并且不对它进行排序:

irb> arr = [3,1,5] 
=> [3, 1, 5] 

irb> arr.sort 
=> [1, 3, 5] 
irb> arr.sort {|x,y| y<=>x} 
=> [5, 3, 1] 
irb> arr.reverse 
=> [5, 1, 3] 

不过,当然,你可以结合sortreverse以相反的顺序进行排序:

irb> arr.sort.reverse 
=> [5, 3, 1] 
+0

我觉得奇怪的是'排序'没有一个参数可以做到这一点 – tenCupMaximum

相关问题