Somando valores de um array em ruby de uma forma mais elegante utilizando inject
Criado em: 16/02/2013
Imagine que tenhamos que somar os valores de um array
, provavelmente seguiríamos para uma abordagem neste sentido:
No entanto o ruby possui o Enumerable#inject. Poderiamos trocar o nosso exemplo para algo como:
uma versão bem mais simples e elegante do que o primeiro exemplo. O inject
ainda nos dá a possibilidade de definirmos um valor para iniciarmos o somatório.
Perceba que agora iniciamos a contagem em 10 e adicionamos os demais valores.
Por padrão o valor que é iniciado no inject
é nil
, sendo assim se passarmos um array vázio o nosso retorno será nil
e não 0, que pode ser o esperado:
Como vimos que podemos definir o valor inicial, podemos definir como 0 e assim conseguir o resultado que esperamos.
Para quem estiver utilizando o rails, o ActiveSupport
adiciona no Enumerable
o método sum
que pode ser utilizado assim:
No nosso exemplo utilizamos o array
values criado manualmente, mas poderia muito bem ser um array
criado a partir do uso do pluck do ActiveRecord por exemplo.
Comentários
Comentários powered by Disqus