Uma forma interessante de processar informações ao iterar por arrays é usar o operador ampersand, &
também chamado de "e" comercial. Por exemplo, se temos um array de números e queremos selecionar apenas os pares, poderíamos executar:
[3, 5, 23, 36, 22, 72, 2, 1, 624].select { |x| x.even? }
#=> [36, 22, 72, 2, 624]
Utilizando o operador &
poderíamos fazer o seguinte:
[3, 5, 23, 36, 22, 72, 2, 1, 624].select(&:even?)
#=> [36, 22, 72, 2, 624]
Uma limitação desse formato é que só podemos chamar métodos que não recebem parâmetros, como odd?
ou downcase
, por exemplo.
Por trás dos panos a linguagem está usando o Proc, um conceito central de Ruby. Se quiser entender mais sobre esse conceito você pode consultar a documentação oficial de Ruby.