From: masayoshi takahashi Date: 2010-08-11T12:57:45+09:00 Subject: [ruby-dev:41994] Re: [Feature #3675] String#prepend, String#>> 高橋征義です。こんにちは。 2010年8月11日10:20 U.Nakamura : > In message "[ruby-dev:41976] Re: [Feature #3675] String#prepend, String#>>" > on Aug.10,2010 22:23:13, wrote: >> (2) >> というのは考えてもみなかった面白い記法です。しかし、 >> 現状の文字列のメソッドで、引数のほうに破壊的な変更を加え >> るメソッドはなかったように思うので、やや躊躇します。もっ >> とも、Stringクラスでなければ、引数に破壊的な変更を加える >> メソッドはいくつもあるので、気にすることではないのかもし >> れません。 >> >> 他の方のご意見も聞きたいです。 > > 訓練されたRubyistは>>をメソッドとして見てしまうので「引数の方 > に破壊的な変更を加える」と思ってしまうわけですが、字面だけ見 > れば右項が変更されるのは割と素直な解釈なんじゃないかと思いま > す。 > というわけで、悪くないんじゃないでしょうか。 訓練されているかどうかはさておき、素直な解釈としては、String#<<との 対比が気になります。 現状、 a = "aaa" b = "bbb" c = "ccc" d = a << b << c p [a,b,c,d] #=> ["aaabbbccc", "bbb", "ccc", "aaabbbccc"] となるわけですが、 x = "xxx" y = "yyy" z = "zzz" w = x >> y >> z p [x,y,z,w] は ["xxx", "xxxyyy", "xxxyyyzzz", "xxxyyyzzz"] となるのでしょうか? なんとなく、 ["xxx", "yyy", "xxxyyyzzz", "xxxyyyzzz"] となってほしいような気もするのですが、そうすると結合ルール的に 困った感じでしょうか。 でも、yが破壊されるのも形としては自然なんですかねえ。ちょっと 判断しづらいところです。 高橋征義