Processando arrays com operador ampersand (&) em Ruby

Dicas - 23/Fev/2020 - por André Kanamura

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.

Foto de perfil do autor
André Kanamura

Dev na Campus Code