From: matz@... (Yukihiro Matsumoto) Date: 2002-06-24T15:20:54+09:00 Subject: [ruby-dev:17563] Re: blocks and local variables まつもと ゆきひろです In message "[ruby-dev:17562] Re: blocks and local variables" on 02/06/24, Shin-ichiro HARA writes: |現在のローカル変数の扱いを敷衍すればすればそうなるでしょうが、 |「y = foo(x) は期待通りだが、x = foo(x) が期待通り動かない」 |という今まで無かった期待にもとづく苦情が発生しそう。新しいブ |ロックローカル変数の登場によるスコープの重なり自体が新しい事 |態なので、foo(x) の x を外の x と解釈しても、それほど整合性 |が失われる感覚はないかも。 ただ、x = foo(x) を許すと今度は「x のスコープはなに?」とい う疑問を呼ぶことになると思います。ということで、いっそ {<> ..> の中では(宣言しない限り)外のローカル変数は見えないという割り 切りが分かりやすさの総和が最大ではないかと考えるようになって ます。 |ただ、やっぱり <> のあるなして、ドーンと変数の意味が変わってし |まうのが気になるといえば気になりますね。 ですね。 |ところで、その [ruby-dev:17533] の、「! でブロックローカル変数 |を表現し、外のローカル変数への代入を := で行う」という案に対す |るご意見はいかがですか?(6)は冗談なので、全部冗談だと思われ |たのかなあ。現状と100%互換で、かつ必要な機能は全てもってい |て、それなりに決定版だと思うんだけど、、、見た目が悪い? ええ。 ^^;;; 「foo!」が変数に見えないというのが最大のネックだと思います。 一応今までは変数種別をprefixで表現していますから。ではいっそ 「!foo」では...だめだな。 まつもと ゆきひろ /:|)