From: keiju@... (Keiju ISHITSUKA) Date: 1997-06-13T14:23:14+09:00 Subject: [ruby-list:3114] Re: [Q] singleton method for module けいじゅ@今はフリー(^^;;;です. In the message: "[Q] singleton method for module ", on Jun/12 16:21(JST) Keiju ISHITSUKA writes: >クラスの特異メソッドはサブクラスに対して継承されますが, モジュールの特 >異メソッドはインクルードしたクラスに継承されませんね? > >これは, 何か深い理由があるのでしょうか? 実際にやりたいことに関しては, includeしないで, extendすれば良いことに 気づきました. それで, 実際にやりたかったのは以下のようなことです. module Foo def foo(txt) eval("class C1 end print C1", txt) end private :foo end class Bar extend Foo foo(binding) end class Baz extend Foo foo(binding) end こんな感じであるモジュールで定義された関数を用いて, 元のクラスでローカ ルなクラスを定義したかったわけです. ここで質問なんですが, これでは, 引 数としてbindingを常に渡さなくてはなりません. ちょっと, 冗長な気がする ので何か他の方法で, サブクラスローカルなクラスをうまく定義する方法って ないですかねえ? 最悪, モジュールでもreceiverはselfで参照できますので, def def_class(first, second = nil, *rest) "class #{first}\n" + (if second def_class(second, *rest) else "class C1\nend\n" end) + "end\n" end def foo def_class(*self.split("::")) end という方法もありますが... ちょっとエレガントじゃないような.. __ .........................................石塚 圭樹@今はフリー(^^;;... ------->>また, アドレス変わりました!! e-mail: keiju@bc.mbn.or.jp <<---