2016-10-15 7 views
-1

コードは以下の通りですが、この特定のコードはHash.hashメソッドのto_a.sort_by(&:hash).hashであることを理解しようとしています。私が知っていることは、最初にハッシュを配列に変換し、配列をソートして、Arrayクラスのhashメソッドを呼び出します。私はどのように正確に配列がソートされていたのか理解しようとしていますか?ルビの&:ハッシュの意味

class Fixnum 
    # Fixnum#hash already implemented for you 
end 

class Array 
    def hash 
    each_with_index.inject(0) do |intermediate_hash, (el, i)| 
     (el.hash + i.hash)^intermediate_hash 
    end 
    end 
end 

class Hash 
    def hash 
    to_a.sort_by(&:hash).hash 
    end 
end 

答えて

0

これはSymbol#to_procの構文糖です。あなたの具体的な場合には

拡張は次のようになります。

to_a.sort_by { |e| e.hash }.hash 

それ言い換えれば、それは一種の要素のhash値によって配列です。