Ruby · Intermediário · Inglês · Técnico
each with object
Método de Enumerable que percorre os itens passando cada um e um objeto acumulador que você escolhe, devolvendo esse objeto no fim. Útil para montar hashes e arrays.
Onde usar
Aparece quando inject ficaria confuso por exigir devolver o acumulador a cada passo. Costuma começar com um hash ou array vazio e preenchê-lo.
Em código
nomes = %w[ana bia]
h = nomes.each_with_object({}) do |n, acc|
acc[n] = n.length
end
p h["ana"] # => 3
p h.size # => 2Exemplos
I built the lookup hash with each_with_object.
Montei o hash de consulta com each_with_object.
Each with object returns the accumulator, not the list.
O each_with_object devolve o acumulador, não a lista.
Cuidado
Cuidado com a ordem dos parâmetros: o item vem primeiro e o acumulador depois, o inverso de inject.