>>681
? は boolean を返すメソッドに、
! はレシーバを変更する破壊的メソッドにつける。
ただし、String#sub! に対する String#sub ような
破壊的でないバージョンを用意している場合に限る。