From: matz@... (Yukihiro Matsumoto) Date: 1998-04-08T18:11:25+09:00 Subject: [ruby-list:7375] Re: Q: jcode.rb tr(String + nil) まつもと ゆきひろです In message "[ruby-list:7374] Re: Q: jcode.rb tr(String + nil)" on 98/04/08, 石塚圭樹 writes: |>ところで foo += 1 でエラーになるのはバグです.これは代入ですからロー |>カル変数は宣言されていて,その値はnilになっているべきです.で,そこに |>+1 するから結果は1ですね. | |うーん. すると, foo += 1 は | | foo = foo + 1 | |と全く同値ではないってことですね? そういうことですね.fooは代入の左辺になっていて右辺には(明示 的には)fooが現れていませんから,これはまずfooの宣言が行われ ると考える方が自然でしょう.これは配列アクセスの自己代入で foo[a] += b が foo[a] = foo[a] + b と全く同じでない程度に同 じでないといえるのではないでしょうか. |>まあ,対応する値が無い場合にはなんらかのメソッドを呼び出し, |>必要に応じて特異メソッドで置き換えるという手法は使えますが, |>Hashの実行速度を下げちゃうでしょうね.それはそれで嬉しくない. | |ここまでするのもね... でしょ. まつもと ゆきひろ /:|)