From: matz@... (Yukihiro Matsumoto) Date: 2002-06-07T15:21:19+09:00 Subject: [ruby-dev:17352] Re: blocks and local variables まつもと ゆきひろです In message "[ruby-dev:17347] Re: blocks and local variables" on 02/06/07, Takaaki Tateishi writes: |代入 := の案では, 今話してる話題は * ブロックパラメータ * ローカル変数 のそれぞれについて、外側の変数との重複を気にせずブロックロー カルにするためにはどうしたらよいか、ということです。 で、「代入 := の案」の話というのは「ローカル変数」だけにかか わる話題です。ですから、ブロックパラメータの記法とは独立です。 私の気持ちとしては、 * 現在のブロック内ローカル変数の仕様はRuby設計における最大 の失敗であったと認めている。 だって7年前にはこれ以外に思いつかなかったんだもの。 * ブロックパラメータ、ローカル変数それぞれについて、重複を 気にせず変数を導入できるほうがよい。 * そこで、ブロックパラメータについては という宣言であれば、外側に同名のローカル変数があってもそ のブロックローカルになるようにしたい。記法は変化するかも。 重複していたら警告するかどうかは未定。 * ブロック内ローカル変数については、ブロックパラメータの指 定を借りて という「宣言」によって指定するか(宣言型)、あるいは、特別 の代入演算子(たとえば「:=」)によってその代入された変数は 以後ブロックローカルになるか、のような方法で実現したい。 重複していたら警告するかどうかは未定。 * 上記ふたつの機能が実現すれば、現在の「不自然かつ使いにく い」ブロック内ローカル変数の役割は終わる。よって、将来の バージョンでは、メソッドのローカル変数、明示的に指定され るブロック内ローカル変数のふたつだけになる(ようにしたい)。 でも、互換性がなあ。 という感じです。 まつもと ゆきひろ /:|)