From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2001-03-09T00:50:18+09:00 Subject: [ruby-list:28596] Re: argument to instance_eval block けいじゅ@日本ラショナルソフトウェアです. In [ruby-list :28434 ] the message: "[ruby-list:28434] Re: argument to instance_eval block ", on Mar/02 21:19(JST) Minero Aoki writes: >あおきです。 >> eval "test_"+ARGV.shift >うーん、ぼくだったらこれはやっぱり __send__ になっちゃいます。 この場合どう考えてもsendのほうがよいでしょうね. >どうも素の eval が嫌いみたい。 sendはあまり頭の中に出てきませんね(^^;;; >じゃあ、ぼくの eval の用途はどんな感じなんだろう。 > > 不定名の変数への代入 4 > 文字列から文字列を得る 5 (各種クオートを Ruby に処理させるため) > ユーザ指定の文字列を実行 6 > クラス名からクラスを得る 1 (const_get のほうがいいなあ) > >か。eval は偏りがないな。 ちょっと統計とる気になりませんが. やはりクラスを定義したりメソッドを定義 したりするのに使っているのが多いですね. いまなら, module_evalでしょうね. あと, 特異クラス関係で恥ずかしいのが幾つもあって: eval("class << mod; instance_methods; end").include?(meth) みたいのが幾つもあります. この場合evalは必要ないですね. あとは, bindingを使いたい場合にevalを使いますね. main = eval("self", workspace) あとは, 不定名の変数への代入 ユーザ指定の文字列を実行 が多いみたいですね. >> そんなことないでしょう. 何か実行したいだけなら klass.instance_evalをすれ >> ばいいのであって, module_evalはメソッド定義のためにあると信じています. >ですかねえ、やっぱり。 です. です. >あっ、あとファイル名/行番号変えもかなり重要っす。 >もうあれなしでは生きていけないー (でも undocumented。) でも, これって, evalにもありますよね? irbでも使用しています. というか irb作るときにリクエストした気がします. __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---