私は次のような何かをしたいと思います:ルビー:(コンテキスト内やexec)任意のメソッドのコードを印刷
class String
def fancy_thing appendix
# Just a trivial example to ensure self and params work.
# Pretend this is something complex.
self.reverse + appendix
end
end
# print_method on instance or class should spit out a string
# containing the actual code for that method
ft_code = "cob".print_method :fancy_thing
ft_code = String.print_instance_method :fancy_thing
# => "{|appendix| self.reverse + appendix }" *
# ft_code gets passed around a bit...
# exec on an object should run code (w/ parameters) as if that code is
# an instance method on that object (or class method if it's a class)
"cob".exec(ft_code, '!') #=> "boc!"
どのように一つのコードprint_methodとfoo.execのでしょうか?好ましくは、彼らはどこで定義されているか、またはどこから来たのかを事前に知らなくても、任意の方法で動作する必要があります。
- はい、方法とブロックが完全に同じではありません。しかし、これは通常、利回りとコールが取るものに近い。私はより良い解決策を知りません。
あなたは両方に「コブ」を必要はありませんその出力を印刷する場所。それらのメソッドのそれぞれが何をするかについての質問を修正/明確にすることはできますか? –
なぜこれが必要ですか? –
joshngの解説には、a)irb /コンソール用(デバッガ本体外)とb)可能かどうかを確認する目的があります。編集内容を参照してください。 – Sai