これが実際に可能かどうかはわかりませんが、明確な答えはどこにも見つかりませんでした。また、私の質問を単なる「検索用語」で定義するのは難しいと思います。これがすでにどこかで回答されている場合は申し訳ありませんが、私はそれを見つけることができませんでした.
私が知りたいのは、Proc が定義されている場所で定義されていないメソッドを保持する Proc を作成できるかどうかです。次に、そのインスタンスをメソッドを持つ別のクラス内に配置し、提供された引数でそのインスタンスを実行したいと思います。
これは私が達成したいもののサンプルですが、方法がわかりません。
class MyClassA
# This class does not have the #run method
# but I want Class B to run the #run method that
# I invoke from within the Proc within this initializer
def initialize
Proc.new { run 'something great' }
end
end
class MyClassB
def initialize(my_class_a_object)
my_class_a_object.call
end
# This is the #run method I want to invoke
def run(message)
puts message
end
end
# This is what I execute
my_class_a_object = MyClassA.new
MyClassB.new(my_class_a_object)
次のエラーが生成されます
NoMethodError: undefined method for #<MyClassA:0x10017d878>
そして、私はその理由を理解していると思います。それは、インスタンスではなくインスタンスでrun
メソッドを呼び出そうとしているためです。ただし、コマンドでインスタンスメソッドを呼び出す方法はありますか?MyClassA
MyClassB
run
MyClassB
run