横からなひです.^^;

> From: Shugo Maeda [mailto:shugo / netlab.co.jp]
> Sent: Wednesday, April 07, 1999 5:11 PM

> ところで、Software Design 4月号の岩谷氏の記事で両者が混同されてる
> ような気がするのはわたしだけでしょうか。

今月はSD誌買いませんでした...

> Javaで、
> 
>  String s = new String("Hello");
>  s += " World";

Rubyだと,

s = String.new( "Hello" ).freeze()  # 単に"Hello".freeze() でOK
s += " World"                       # => "Hello World"

ですかね.

RubyおよびJavaにおける「+」演算子は,
(たまたま両言語で同名の)Stringクラスに対して非破壊的で,
新たなオブジェクトを生成する(してしまう).

つまり,新たにオブジェクト生成して
sをそいつに束縛し直してるんであって,
freezeされた(Javaなら予めimmutableな)元のオブジェクトを
muteしてるわけじゃない,と...

いえもちろん前田さんに説明しようとしてるわけじゃなくて,
自分の理解を書いて,
間違っていたら指摘してもらおうと思っているだけです.^^;

んでもって,Rubyでは

S = String.new( "Hello" )
S = String.new( S + " World" )

は不可.記事では両者が混同されているらしい?