Почему так выходит c each на ruby?

found_small = found_page.search('small').each_with_index do | id, i |

 	@uuid = [ i => id ]		
end

puts @uuid


Выводит только последнее значение, а если вставляю в цикл puts @id то выводит - как надо, каждую строку.
Подскажите от чего так? И как правильнее сделать из списка строк, ассоциативный массив?
Пробовал .split("\n") — то же что то не выходит.
  • Вопрос задан
  • 2436 просмотров
Решения вопроса 3
hash = Hash.new
%w(cat dog wombat).each_with_index {|item, index|
  hash[item] = index
}
hash   #=> {"cat"=>0, "dog"=>1, "wombat"=>2}
Ответ написан
Комментировать
@Finist
Вы не добавляете объекты, а каждый раз присваиваете по новой, попробуйте:
@uuid = {}
found_small = found_page.search('small').each_with_index do | id, i |
  @uuid.merge!( i => id)
end
puts @uuid
Ответ написан
Комментировать
Vakiliy
@Vakiliy
Например так:
a = found_page.search('small')
Hash[*(0...a.size).zip(a).flatten]


У вас выводится результат последенй итерации
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы