2015-07-02 7 views
-1

У меня есть simple_hash:Создать новый хэш из старого с Руби

old_hash = {"New"=>"0"} 

Я Вань, чтобы преобразовать его в новый формат:

new_hash = old_hash.keys.each do |key| 
    hash = Hash.new 
    hash[key] = {count: old_hash[key]} 
    hash 
end 

но этот код возвращает меня:

["New"] 

вместо:

{"New"=>{:count=>"0"}} 

И почему возникает вопрос?

+0

Где 'simple_hash'? – sawa

ответ

0

ли это:

hash = Hash.new 
new_hash = old_hash.keys.each do |key| 
hash[key] = {count: old_hash[key]} 
hash 
end 

hash 
# => {"New"=>{:count=>"0"}} 

Поскольку вы разместили hash = Hash.new внутри цикла, вы создаете новый хэш каждый раз.

+0

Что случилось с 'new_hash'? –

2

Вы смешиваете синтаксис блока с синтаксисом метода. В вашем коде new_hash получает значение old_hash.keys, что не то, что вы хотите.

Немного модификации работ:

new_hash = Hash.new 

old_hash.keys.each do |key| 
    new_hash[key] = {count: old_hash[key]} 
end 
Смежные вопросы