私は2つのクラスを持っていて、すべてのメソッドをあるクラスから別のクラスにコピーしたいと思います。いくつかのメソッドは引数を持たず、いくつかは引数を持ち、またいくつかは引数としてハッシュを持ちます。そして、私は決して事前に誰が決めるのか分からない。だから私はこのコードを作成しましたが、引数を考慮していないことが分かりました。クラスからメソッドのリストを取得し、それを別のクラスに正確に複製する方法はありますか?すべてのメソッドをあるクラスから別のクラスにコピーする
def partial(cls)
cls.instance_methods(false).each do |method_name|
define_method(method_name) do
cls.new.method(method_name.to_sym).call
end
end
end
方法はファーストクラスでdefine_method使ってその場で作成されているので、私はちょうど含める使用することはできません。上記のコードにはclsが渡され、継承されたものではなく、そのクラスに実際に書き込まれているインスタンスメソッドがすべて見つかった後、同じ名前の新しいメソッドが作成されます。そのメソッドが呼び出されると、実際には同じ名前のメソッドで他のクラスが呼び出されます。私はargsを持っていない限り、これは素晴らしく動作します。私はそれが引数を持っていたかどうかを確認するために条件チェックをしていましたが、引数付きのメソッドを呼び出していましたが、ハッシュをうまく処理できませんでした。それは引数の配列としてハッシュを作ったが、これは私が望むものではない。
文字通り「このメソッドを知っていますか、それが何であれ、文字通りこの他のクラスで同じことをする」という簡単な方法があるのだろうかと思っていました。
私はあなたがしたいことについて混乱しています。あなたはインスタンスメソッドについて話していますが、次に「同じ名前のメソッドで他のクラスを呼び出します」と言う。あなたが他のクラスの忍耐力を追跡していない限り、それはうまくいかない。 – AShelly