2014-10-23 2 views
0

Я использую этот код для сортировки Hash; Я понятия не имею, как это работает. пожалуйста, объясните мне:Ruby - объяснять код snippet hash sorter

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

Enumerable#sort reutrns в отсортированный массив пар ключ-значение:

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

Hash::[] создать новую хеш-базу на аргумент:

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

BTW, если вы используете Ruby 2.1+, вместо этого вы можете использовать Array#to_h:

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

Для полноты: в ruby ​​v2 вы можете просто сделать «h.sort.to_h» – BroiSatse

+0

Я клянусь, что я сделал, чтобы посмотреть в документ; –

+0

Я просто читал over_and_over новые методы; –