From: "K.Kosako" Date: 2002-06-24T06:54:51+09:00 Subject: [ruby-dev:17553] Re: blocks and local variables Yukihiro Matsumotoさんの <1024640649.178727.22485.nullmailer@picachu.netlab.jp>から > ちょっと場合分けが多いのが不安といえば不安ですね。 再度挑戦。今回のは決定版と思います。 動作自体は簡単になっていないのですが、意味としては簡単です。 (今までこんなことに気付かなかったことが不思議なほど) <...; a,b,..>の形式で宣言された変数(a,b,..)だけが、 ブロックの外側のローカル変数環境に影響を与える。 宣言されていないものは、外側に影響を与えない。 ----- 実際の動作を説明すると、 宣言された変数については、要するに外側のローカル変数として 処理されるだけなので簡単です。 宣言されていない変数は、参照しかされていない間はブロックの外側を参照し、 代入が起こった時点でブロックローカルな変数として作られます。 一度代入された後の参照と代入は、ブロックローカルなものを使用します。 パラメタか、そうでないかは関係ありません。 -- 小迫@ソフネック 渋谷区恵比寿1-15-1