From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-04-06T16:18:23+09:00 Subject: [ruby-dev:2080] Re: [Req] Binding.new けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :2074 ] the message: "[ruby-dev:2074] Re: [Req] Binding.new ", on Apr/06 15:52(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|> p = proc{binding}.call >|> p eval "defined? foo" >|> "local-variable" >|最後の結果がおかしいと思うんですけど? >すいません.あの行は本当は > >|> p eval "defined? foo", p > ^^^ >です. pつけなくても, "local-variable"って出るですけど... >|> p eval "defined? foo" >|> "local-variable" >|ちなみに, 以下で実行すると: >|となり, 求める結果になっているような気がします. >では,なにが問題なんでしょうね. おかしいですよね?? >|>ええと「スコープはネストしない」というのはCLUから受け継いだ >|>rubyの「哲学」です.イテレータブロック内の変数でちょっと例外 >|>が出てますが,これを大々的に変えるつもりはないです.どうして >|なるほど. でも, 何故ネストしたくないのでしょう? >スコープのネストは場所によって変数の意味が変ってしまうからです. 確かに, メソッド内でローカル変数は意味が変わらないことが保証された方が, 可読性は上がりますね. >それにもともとrubyのローカル変数は名前の再定義を許しませんから,あん >まりネストしても使い出がないでしょう. 確かに, ローカル変数はCの変数とその辺の動作が違っているんですね... ク ラス定数は違うのに... >いや,たとえば独立した名前空間という機能をあきらめるとか ^^;;; 最悪(?)はそうでしたね. procが仕えそうだから, このままいっちゃいますけ ど(^^;;; __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---