Я хочу получить конкретный вывод, повторяющий Ruby Hash.
Это хеш, который я хочу повторить:
hash = {
1 => ['a', 'b'],
2 => ['c'],
3 => ['d', 'e', 'f', 'g'],
4 => ['h']
}
Это вывод, который я хотел бы получить:
1-----
a
b
2-----
c
3-----
d
e
f
g
4-----
h
В Ruby, как я могу получить такой вывод с моим Hash?
Ответы:
Что касается порядка, я должен добавить, что в 1.8 элементы будут повторяться в случайном порядке (ну, фактически, в порядке, определенном хеш-функцией Fixnum), в то время как в 1.9 это будет повторяться в порядке литерала.
источник
?
вместо ключа? пример:|?, array|
это правильный синтаксис??
недопустимое имя переменной в Ruby. Вы можете использовать_
, но вам не нужно .|_, v|
Самый простой способ перебора хеша заключается в следующем:
источник
источник
Вызов sort для хэша преобразует его во вложенные массивы, а затем сортирует их по ключу, поэтому все, что вам нужно, это:
И если вам на самом деле не нужна часть "----", это может быть просто:
источник
Мое однострочное решение:
hash.each { |key, array| puts "#{key}-----", array }
Я думаю, что это довольно легко читать.
источник
Вы также можете уточнить,
Hash::each
чтобы он поддерживал рекурсивное перечисление. Вот моя версияHash::each
(Hash::each_pair
) с поддержкой блоков и перечислителей :Вот использование примеров из
Hash::each
и безrecursive
флага:Вот пример из самого вопроса:
Также взгляните на мою рекурсивную версию
Hash::merge
(Hash::merge!
) здесь .источник