2014-03-25 160 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

相關問題