Usando métodos bang(!)

Dicas - 14/Mar/2021 - por Marcus Pereira

Os métodos bang(!) têm como funcionalidade alterar o próprio objeto ao mesmo tempo que aplicam sua função principal, sem ter a necessidade de retornar uma cópia do objeto modificado. Os métodos bang(!) são identificados pela exclamação após o seu nome.

Quando estamos desenvolvendo, é muito comum guardar o retorno de um método dentro de uma variável. Veja o código abaixo:

numeros = [1, 3, 4, 2, 20, 10, 16]
resultado = numeros.select { |numero| numero > 3 }

print resultado # => [4, 20, 10, 16]

Nesse exempo usamos o método select para selecionar apenas os números maiores que 3 e guardamos os valores dentro da variável resultado.

Usando o método select!, podemos descartar a variável resultado, pois ele irá fazer a alteração no próprio objeto numeros:

numeros = [1, 3, 4, 2, 20, 10, 16]
numeros.select! { |numero| numero > 3 }

print numeros # => [4, 20, 10, 16]

Com métodos bang(!) podemos parar de criar variáveis sem necessidade. 😁 Mas é importante lembrar que eles são destrutivos e substituem os dados originais dos objetos em que agem.

Em Ruby também existem muitos outros métodos bang(!) como: map!, reverse!, rotate!, shuffle! ou sort_by!, e você pode conferir na documentação ou nos links a seguir.

Referências

Foto de perfil do autor
Marcus Pereira

Dev

Desenvolvedor, gosta de ler e apaixonado por mergulho. Gosta de falar sobre o mundo da tecnologia e ama dogs =)