From: Shin-ichiro Hara Date: 1998-11-24T03:11:49+09:00 Subject: [ruby-dev:3645] Re: block local variable(Re: スコープの範囲) 原です。 > 新井です。 > def dummyscope > binding > end > > $assign = %Q{v = 2; p v} > > eval $assign, dummyscope # => 2 局所化されてる > p v if defined?(v) # => > > v = 1 # eval より前に定義 > p v # => 1 > eval $assign, dummyscope # => 2 局所化されてる > p v # => 1 ひとつ思いついたけど、特異メソッドが所かまわず定義し放題(?) なのを利用してこういうのどうですか?(Object を使っているのに 意味はありません。) v = 1 def Object.dummyscope v = 2 p v # => 2 end Object.dummyscope p v # => 1 定義と同時に実行できたらいいのにな。しかし、だんだん何を したいのかわからなくなってしまった。 > イテレータの場合は、うまい例が思い付かないけど、ス > クリプトを上から順に書いているうちは問題に当たらな > いのではないかと予想してます。(不用意にエディタで > カット&ペーストをするとあれ?ってことになるのでは > ないでしょうか?) うん、その気持ちはわかります。 > 考え方が変なのかなぁ? もしかすると変かも。関数(メソッド)というのは、複数回使わな くてもひとまとまりのサブルーチンとして明確化するために定義す る場合がありますよね。まして他のソースに張り付けるなら、イン ターフェースを明確化した関数にしてから移動させるべきではない でしょうか。もともと関数にできないようなコードは他の場所に張 り付けたらいけないですよ、、、って必ずしもそうとは限らないか。 (^^;