From: matz@... (Yukihiro Matsumoto) Date: 1997-08-18T23:47:21+09:00 Subject: [ruby-dev:158] Re: meta programming features まつもと ゆきひろです In message "[ruby-dev:154] Re: meta programming features" on 97/08/18, 石塚圭樹 writes: |けいじゅ@日本ラショナルです. |そうですねえ... そうなると, object_evalというよりも, |single_eval(singuler_eval?) って感じですね. それはそれであって良いと思 |いますが, メソッド的に呼び出したとしても, 特異クラスへの定義だけが行い |たいとは限らないので, 今の仕様のevalもpublicにして頂いて, | | Object#eval | Object#single_eval | |の両方を用意してもらえるとありがたいですね. あとは, 必要に応じて使いわ |けができればいいかなと... evalはやはり関数的に使うことを想定した仕様になっていますから, publicにするのは望ましく内容に思うのですけど. |ああ. これはobjがクラスの場合ですよね. objが通常のインスタンスの場合に |利用価値があると思っています. (大文字で始まる)インスタンス定数みたいな |使い方ができますので. いや,べつにクラスに限ったつもりはないんですが,まあ禁止する つもりはないんで自由に使って下さい. |そうですね. ローカル変数については何もいっていませんでした, これは静的 |スコープで共有すると思っていいんでしょうか? でしょうね.でないと使いにくいでしょう. |class Foo | XX = "Foo" | def foo | Bar.eval "YY = XX" | end |end | |見たいな使い方は, できないといっていませんか? いっています.その方が望ましくないですか.XXの値を参照したい ときにはローカル変数を経由すべきではないでしょうか. |> class << obj |> self.instance_methods.include?("foo") |> end |> |>ではどうでしょう? | |v1.1a0のinstance_methodsの仕様を読むと, 無理かなと思うんですが?? |Class#instance_methodsはそのインスタンスが分かるメソッド全てを返すんで |すよね? それとも, そのクラスの属するメソッドだけ返す? 間違えました(作者が間違えてどうする).どうするのが良いでしょ うね.大体 ruby にはどのクラスでメソッドが定義されているか動 的に知る方法は用意されていませんものね.Object#methodsあたり を見直した方が良いかも知れませんね. まつもと ゆきひろ /:|)