Ruby · Essencial · Português · Informal
método bang
Método cujo nome termina em ! e que costuma ter uma versão sem ela. A versão com bang geralmente altera o objeto no lugar ou é mais perigosa.
Onde usar
Aparece em upcase!, map! e save!. No code review, confira o retorno: muitos métodos bang devolvem nil quando nada muda, e no Rails o save! lança exceção em vez de devolver false.
Em código
s = "ruby".dup
p s.upcase # => "RUBY"
p s # => "ruby"
s.upcase!
p s # => "RUBY"
p s.upcase! # => nil (nada mudou)Exemplos
Use o método bang só quando quiser mudar a string original.
O save com bang estoura exceção se a validação falhar.
Cuidado
O ! é só convenção de nome e não faz nada sozinho: nem todo método perigoso tem bang, e nem todo bang altera o objeto.
Sinônimos
método perigoso