まつもと ゆきひろです

In message "[ruby-list:7374] Re: Q: jcode.rb tr(String + nil)"
    on 98/04/08, 石塚圭樹 <keiju / Rational.Com> writes:

|>ところで foo += 1 でエラーになるのはバグです.これは代入ですからロー
|>カル変数は宣言されていて,その値はnilになっているべきです.で,そこに 
|>+1 するから結果は1ですね.
|
|うーん. すると, foo += 1 は
|
|  foo = foo + 1
|
|と全く同値ではないってことですね?

そういうことですね.fooは代入の左辺になっていて右辺には(明示
的には)fooが現れていませんから,これはまずfooの宣言が行われ
ると考える方が自然でしょう.これは配列アクセスの自己代入で
foo[a] += b が foo[a] = foo[a] + b と全く同じでない程度に同
じでないといえるのではないでしょうか.

|>まあ,対応する値が無い場合にはなんらかのメソッドを呼び出し,
|>必要に応じて特異メソッドで置き換えるという手法は使えますが,
|>Hashの実行速度を下げちゃうでしょうね.それはそれで嬉しくない.
|
|ここまでするのもね...

でしょ.
                                まつもと ゆきひろ /:|)