TL;DR

Ruby では、レシーバを書き換えるメソッドに「!」を付ける慣習があるが、「!」が付かない破壊的メソッドもある。

仕組み

Ruby の公式ドキュメントによると、名前が「!」で終わるメソッド(bang メソッド)は、慣習として「危険な」メソッドとみなされる。コアライブラリでは、「!」の付かない同名のメソッドと違い、レシーバを恒久的に書き換えることを示す。ただし、これは「!」が付くメソッドについての慣習である。レシーバを書き換えるメソッドに必ず「!」が付くわけではない。

注意点

「!」が付いていないからといって、非破壊的なメソッドだと決めつけない。また、コアライブラリ以外では、この慣習が守られているとは限らない。

関連

出典