Хэш Инициализаторы:Руби Hash Инициализаторы
# this
animals = Hash.new { [] }
animals[:dogs] << :Scooby
animals[:dogs] << :Scrappy
animals[:dogs] << :DynoMutt
animals[:squirrels] << :Rocket
animals[:squirrels] << :Secret
animals #=> {}
# is not the same as this
animals = Hash.new { |_animals, type| _animals[type] = [] }
animals[:dogs] << :Scooby
animals[:dogs] << :Scrappy
animals[:dogs] << :DynoMutt
animals[:squirrels] << :Rocket
animals[:squirrels] << :Secret
animals #=> {:squirrels=>[:Rocket, :Secret], :dogs=>[:Scooby, :Scrappy, :DynoMutt]}
Я видел, кто-то после них на другой вопрос, но я не понимаю, почему животные появляется пустой в первом случае. Если я напечатаю
animals[:dogs]
Я получаю соответствующий массив.
Вы можете связать с «другой вопрос»? –
@Andrew: Это выглядит так же, как http://stackoverflow.com/q/9492889/479863, ответ по существу, по крайней мере один и тот же. –
Другой вопрос: http://stackoverflow.com/questions/613985/common-ruby-idioms –