From: Yukihiro Matsumoto Date: 2010-08-10T22:23:13+09:00 Subject: [ruby-dev:41976] Re: [Feature #3675] String#prepend, String#>> まつもと ゆきひろです In message "Re: [ruby-dev:41969] [Feature #3675] String#prepend, String#>>" on Tue, 10 Aug 2010 18:24:04 +0900, Sora Harakami writes: |sorahです. | |通常, Stringでの文字列を手前に破壊的に加えるのは, a = "foo" + a 等で行いますが, |直感で読みにくく, 記号などで書きにくくなっていると思います. これは破壊的ではないですね。aに最初入っていた文字列は変更さ れずに残ります。 |なので, String#prependと String#>> を追加するというのはどうでしょうか. 非常に興味深いです。ただ、いくつか気になる点があります。 (1) 実装上のことですが、appendと異なり、prependは、文字列領域 を拡張した上で、現在の文字列の内容をコピーし、それから引 数の内容を先頭からコピーすることになります。つまり、 a = "foo" + a と比較して、コストはオブジェクトアロケーションひとつしか 変わりません。それが本当にうれしいかやや疑問です。もっと も長い目で見るとGCへの負荷が軽いというメリットが出るケー スもあるでしょう。 (2) >> というのは考えてもみなかった面白い記法です。しかし、 現状の文字列のメソッドで、引数のほうに破壊的な変更を加え るメソッドはなかったように思うので、やや躊躇します。もっ とも、Stringクラスでなければ、引数に破壊的な変更を加える メソッドはいくつもあるので、気にすることではないのかもし れません。 他の方のご意見も聞きたいです。 まつもと ゆきひろ /:|)