まつもと ゆきひろです

In message "Re: [ruby-list:47806] Re: [].join.encoding # => #<Encoding:ASCII-8BIT>"
    on Tue, 1 Feb 2011 08:27:45 +0900, Nobuyoshi Nakada <nobu / ruby-lang.org> writes:

|At Tue, 1 Feb 2011 07:08:41 +0900,
|Yusuke ENDOH wrote in [ruby-list:47805]:
|> String#gsub! などの推論から、(少なくとも String の) 破壊的な
|> メソッドは、変更が起きなかった時に nil を返しそうです。

メソッド名の末尾に!がつくメソッドは変更が起きなかったときに
nilを返すというルールになっています※。force_encodingは破壊的
ではありますが、!はつかないので対象外ですね。

※ Array#reverse! は変更がなくても nil を返しませんが、これ
は逆順にはしたが、結果として同じであったと解釈します。

|> force_encoding の結果をそのまま変数に代入するのは本当に推奨
|> されるスタイルなんでしょうか。
|
|selfかnilを返すforce_encoding!を追加するとか?

本当に必要であれば。