Loop over enumerator with a seed, takes output from last round as input.
eg.
array to hash
array = [ 1, 2, 3 ]
hash = array.inject({}) do |memo, n|
memo["key " + n] = "value " + n
end
# hash: { "key 1" => "value 1", "key 2" => "value 2", "key 3" => "value 3" }