Rubyについて Part 2
■ このスレッドは過去ログ倉庫に格納されています
0461デフォルトの名無しさん
NGNGClassクラスのprivateメソッドにinheritedというのがある。
こいつはなにかというと、サブクラスが定義されたときに、
そのサブクラスを引数に呼び出されるものだ。
それで実験してみた。
class Super
def Super.inherited(subclass)
p subclass.instance_methods
end # def
end # class
class Sub < Super
def foo
end # def
end # class
実行結果は
[]
だった。ダメじゃん…
instance_methodsが取れれば(結果が["foo"]だったら)、
かっこよさげな方法でチェックできたのに。
このフックってサブクラスが生成されたよ、名前はこうだよ、
くらいの情報しかないみたいだ。
実行速度が遅くなってもよいのなら、Superのinitializeメソッドのなかで
instance_methodsを取って比べるというのでもチェックは可能だけど、
Subオブジェクトが生成されるたびにチェックするんで、
そんなアホなことはしないほうがいいだろう。
以上、役立たずでした。
■ このスレッドは過去ログ倉庫に格納されています