2016-10-15 72 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值數組。