まつもと ゆきひろです

日本につきました。

In message "[ruby-list:36441] Re: ar=[];ar+=2でエラー"
    on 02/11/11, Tanaka Akira <akr / m17n.org> writes:

|つまりメンタルモデルの違いによるわけですね。Ruby が作者のメンタルモデ
|ルを反映するのは自然な話なので、それはそれで納得できます。

そゆことですね。

|ふむ。let a = b = value で、b の扱いは?

まだこれから考えないといけません。

  * aだけブロックローカル
  * aもbもブロックローカル

の両方が考えられますが、なんとなく前者かなあ。

|> という風にしようかなと思っています。非互換ですが、普通の使い
|> 方をしてる場合にはあまり問題にならない非互換性だと思います。
|> みなさん、今後を考えてちょっとだけ注意してブロック内ローカル
|> 変数を使いましょう。
|
|現在と Rite の両方でブロックローカルな変数はブロックパラメータだけな気
|がするので、いまのところ注意するのは困難な気がします。

具体的には

  * ブロックパラメータにローカル変数以外は使わない
  * ブロックパラメータ(と同名の変数を)外側で使わない

というルールに従っていれば問題は(あまり)発生しないのでは、と。

|ブロックローカル変数を使いたい時には、lambda {|a| a = value ...}.call と
|する、というのはちょっとあまりにあんまりかなぁ。

いや、わたしも同様のことをする

  let {|a|
    ...
  }

というのを考えました。これもなかなか気に入ってはいるのですが、
初期化がちょっと面倒ですね。

                                まつもと ゆきひろ /:|)