a = [[1, \'a\'],[2, \'b\'],[3, \'c\'], [4, \'d\']] a.inject({}) {|r, val| r[val[0]] = val[1]}
When I run this, I get an index error
When I change the b
The first block returns the result of the assignment back into the inject, the second returns the hash, so it actually works.
inject
A lot of people consider this usage of inject an anti-pattern; consider each_with_object instead.