Внутри Rails-кода люди склонны использовать метод Enumerable # для создания хэшей, например:
somme_enum.inject({}) do |hash, element|
hash[element.foo] = element.bar
hash
end
Хотя это, похоже, стало распространенной идиомой, кто-нибудь видит преимущество над "наивной" версией, которая будет выглядеть следующим образом:
hash = {}
some_enum.each { |element| hash[element.foo] = element.bar }
Единственное преимущество, которое я вижу для первой версии, заключается в том, что вы делаете это в закрытом блоке, и вы (явно) не инициализируете хэш. В противном случае он злоупотребляет методом неожиданным способом, его труднее понять и усложнить. Так почему это так популярно?