Ruby-explain代码段哈希分类器

Ruby-explain代码段哈希分类器,ruby,hash,Ruby,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(mai

我使用此代码对哈希进行排序; 我不知道它是怎么工作的。 请向我解释:

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> 
reutrns一个已排序的键值对数组:

h = {b: 1, a: 2}
h.sort
# => [[:a, 2], [:b, 1]]
基于参数创建新的哈希:

Hash[h.sort]
# => {:a=>2, :b=>1}
顺便说一句,如果您使用Ruby 2.1+,您可以使用:


为了完整性:在ruby v2中,你只需做
h.sort.我发誓我做的第一件事就是查看文档@布罗伊萨泽,谢谢你的评论。我更新了答案,将
数组#添加到_h
。顺便说一句,它是在Ruby 2.1中引入的。这也可以写成
Hash[Hash.sort\u by(&:first)]
,其中
Hash.sort\u by(&:first)
按键对键值对进行排序。如果散列较大,这可能比使用
排序
更快。
h.sort.to_h
# => {:a=>2, :b=>1}