実際には他のクラスに属するいくつかのメソッドを含む小さなクラスを作成したいので、既存のコピーである他のクラスでメソッドを定義するにはどうすればよいですか。理解できないメタプログラミングの魔術師だと思います。
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つのメソッドだけでクラスを取るgemに取り組んでいます。初期化すると(親クラスに隠されます)、このメソッドが別のクラスに渡されます。これはブロックで作成できますが、メソッドを使用すると少しきれいになります。
PS:あるクラスから別のクラスにメソッドをコピーするようなものです
PSS : または... メソッドを proc に変換する方法を教えてください。class_eval