2013-07-30 71 views
0

任何人都可以清楚這是如何工作的?Enumerable#sort_by方法是如何工作的?

frequencies = frequencies.sort_by { |a, b| b} 

我知道它改變了哈希顯示的順序,但它是如何做的我不知道。

任何幫助表示讚賞。

+1

看看這裏 - http://ruby-doc.org/core-2.0/Enumerable.html#method-i-sort_by –

+0

'sort_by'用途一種由Randal Schwartz在Perl中流行的技術,通常稱爲「[Schwartzian變換](http://en.wikipedia.org/wiki/Schwartzian_transform)」。它預先計算一個與實際值相關的中間值,中間值用於排序。如果需要進行任何計算,它比正常的「排序」更快,特別是在處理複雜對象時。對於簡單的對象,比如整數,字符和字符串,'sort'通常會遠離'sort_by'。 –

回答

0

Enumerable#sort_by根據給定塊的返回值進行排序。 從你的例子看,frequencies看起來像一個哈希。

這裏是一個Hash sort_by的例子

h = {:a => 2, :b => 1, :c => 4} 
#=> {:a=>2, :b=>1, :c=>4} 

h.sort_by {|k, v| v} 
#=> [[:b, 1], [:a, 2], [:c, 4]]