From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-07-28T23:51:40+09:00 Subject: [ruby-dev:1] Re: [ruby-list:3486] Re: eval with dynamic binding [Re: meta programming features] けいじゅ@今はフリー(^^;;;です. In [ruby-list :03486 ] the message: "[ruby-list:3486] Re: eval with dynamic binding [Re: meta programming features] ", on Jul/26 09:36(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >|これはこれで, 実現するかどうかはともかく, もうちょっと深めたいのでつき >|あって下さい. > >いいですとも,でもruby-devができたらそちらに移りましょうね. To: ruby-dev, Cc: ruby-listとしました. 次は, Cc外して下さい. >|あ. そうでした. この場合は, パラメータとして|a|しているけど, 静的ロー >|カル変数の`a'と同じものになるんですね? > >そうですね.動的ローカル変数というのも実装よりの表現で言語仕 >様的にはイテレータブロックの範囲内でだけ有効なただのローカル >変数です.特別な用語を使っているせいで誤解を招いているかも知 >れません. というか, Cでは, { int foo; int bar; { int foo; bar; } } のとき, 内側のbarと外側のbarは共有されますが, fooはそうじゃないですよ ね. そういうイメージがあったのでした. >| eval "print ARGV.inspect", a_binding, "foo" >|みたいな方法は可能かな? 変数名はARGVじゃない方が良いとは思いますが. > >可能ですけど,やるつもりはないですね.evalはそのスコープの任 >意のローカル変数にアクセスできるわけですから. そうですか... >構造が同じだけで継承関係はないです.Bindingというクラスはな >くて,ただのDataですし.クラスにした方が良いのかなあ. binding.type とすると Data になりますね. Dataって何ですか? クラスじゃ ないですよね. >|通常のProcは現在のバインディングを引き継ぎますが, 明示的にバインディン >|グを指定して, かつ, 動的ローカル変数とその値の設定が無理なくできれば求 >|めるものができそうな. > >すでに述べましたが,動的ローカル変数ってのは言語仕様上はスコー >プが限定されているだけでただのローカル変数なので,こういうの >には向かないと思います. Proc構造体に対して動的に動的ローカル変数を追加するということもできないっ てことですか? 例えば, new_binding = eval "proc{|a| a = 'Foo'}", old_binding などは, 動的に動的ローカル変数を追加したバインディングを生成しているこ とになると思うのですが... __ .........................................石塚 圭樹@今はフリー(^^;;... ------->>また, アドレス変わりました!! e-mail: keiju@bc.mbn.or.jp <<---