Как получить определенный вывод, выполняющий итерации хеша в Ruby?

В большинстве случаев это действительно не имеет значения так очень. Просто выберите хороший размер, такой как 4K или 16K и придерживайтесь его. Если Вы положительны , что это - узкое место в Вашем приложении, то необходимо начать представлять для нахождения оптимального размера буфера. Если Вы выбираете размер, это является слишком маленьким, Вы будете напрасно тратить время, делая дополнительные операции ввода-вывода и дополнительные вызовы функции. Если Вы выбираете размер, это является слишком большим, Вы начнете видеть много неудачных обращений в кэш, которые действительно замедлят Вас. Не используйте буфер, более крупный, чем Ваш размер кэша L2.

210
задан Elie Teyssedou 23 March 2018 в 07:53
поделиться

3 ответа

Вызов sort по хэшу преобразует его во вложенные массивы, а затем сортирует их по ключу, поэтому все, что вам нужно, это следующее:

puts h.sort.map {|k,v| ["#{k}----"] + v}

И если вам действительно не нужен "--- - "часть, это может быть просто:

puts h.sort
18
ответ дан 23 November 2019 в 04:35
поделиться
hash.each do |key, array|
  puts "#{key}-----"
  puts array
end

Что касается порядка, я должен добавить, что в 1.8 элементы будут повторяться в случайном порядке (ну, фактически, в порядке, определенном хеш-функцией Fixnum), а в 1.9 он будет повторяться в порядок букв.

313
ответ дан 23 November 2019 в 04:35
поделиться
hash.keys.sort.each do |key|
  puts "#{key}-----"
  hash[key].each { |val| puts val }
end
48
ответ дан 23 November 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: