From: shugo@... (MAEDA Shugo) Date: 1998-11-23T00:29:49+09:00 Subject: [ruby-dev:3633] Re: block local variable (Re: スコープの範囲) 前田です。 >>>>> In [ruby-dev:3632] >>>>> "新井" == Koji Arai san wrote: 新井> ちなみに、前田さんのパッチは 新井> $/ := nil 新井> の場合、ブロックローカル&メソッド呼び出しに伝搬 新井> します? 新井> だとうれしい。(なんないだろうなぁ) $/はローカル変数ではないのでparse errorになってしまいます。 新井> 現在の仕様で困ったことは、本当にないんですけどね。 新井> でも、なんか心配。 僕もそんなに困ったことはないんですけどね(^^; でも、 def foo ret = nil iter do ret = ... end return ret end みたいなコードで、ret = nilのように宣言のためだけに代入しないと いけないのが、ちょっと残念な気がします。 前田> 個人的にはfoo = 1とした時は、既にブロックローカルとしてfooが宣言されて 前田> ないかぎり、普通のローカル変数への代入とみなす方が便利な気もしますが。 と書いたように:=の時だけブロックローカルになるという仕様になると、 def foo iter do ret = ... end return ret end のように宣言のためだけの代入を書かなくて良くなります。 そのかわり、Threadなどでブロックローカルにしたい時は明示的に:=を 書かないといけなくなりますが、外側のスコープですでに変数が宣言さ れていないか気にしないで済むというのはメリットと言えるかもしれま せん。 -- 前田 修吾 (mailto:shugo@aianet.ne.jp)