Ruby - 解释代码片段哈希分类器

时间:2014-10-23 14:53:07

标签: ruby hash

我使用此代码对Hash进行排序; 我不知道它是如何工作的。 请向我解释:

def foo(hash)
  Hash[hash.sort]
end

irb(main):001:0> h = {1=>'z', 3=>'x', 2=>'y'}
=> {1=>"z", 3=>"x", 2=>"y"}
irb(main):002:0> Hash[h.sort]
=> {1=>"z", 2=>"y", 3=>"x"}
irb(main):003:0> 

1 个答案:

答案 0 :(得分:1)

Enumerable#sort返回键值对的排序数组:

h = {b: 1, a: 2}
h.sort
# => [[:a, 2], [:b, 1]]

Hash::[]在参数上创建一个新的哈希基础:

Hash[h.sort]
# => {:a=>2, :b=>1}

顺便说一句,如果您使用Ruby 2.1+,则可以使用Array#to_h代替:

h.sort.to_h
# => {:a=>2, :b=>1}