実際に他のクラスに属するいくつかのメソッドで小さなクラスを書きたいので、既存のクラスであるメソッドを他のクラスに定義するにはどうすればいいですか?私はそれが私が理解していない魔法のメタプログラミングだと信じています。あるクラスから別のクラスにメソッドをコピーする
class Foo
def initialize
# with blocks, I would just pass block, but this is methods
# so this won't work
Bar.class_eval(perform)
Bar.class_eval(process)
Bar.class_eval(save)
end
def perform
1+1
end
def process
# some code
end
def save
# some code
end
end
class Bar; end
foo = Foo.new
foo.perform
#=> 2
Bar.test
#=> 1
なぜこれが必要ですか?私は丁度3つの方法でクラスを取る宝石に取り組んでいます。初期化(親クラスに隠されていない)では、このメソッドを別のクラスに渡します。私はブロックでこれを行うことができますが、方法では少しクリーナーです。
PS:PROCにメソッドを変換する方法を...または、私は変換するにはclass_eval
多分委任を使用する必要がありますか? http://khelll.com/blog/ruby/delegation-in-ruby/ – Fivell
モジュールを含めることはできませんか? –
@Fivell、多分!今すぐ代表団を読む必要があります – fl00r