다음과 같은 것을하고 싶습니다 :루비 (Ruby) : 임의의 메소드의 코드를 출력한다.
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를 하나의 코드로 만들 수 있습니까? 가급적이면, 그들은 임의의 방법으로 작동해야하며, 어디에서 정의되거나 출처를 나타낼 지 미리 알지 못합니다.
- 예, 방법과 블록이 완전히 동일하지 않다는 것을 알고 있습니다. 그러나 이것은 일반적으로 수확량과 통화량에 더 가깝습니다. 나는 더 나은 해결책을 모른다.
당신이 모두 "속"을 필요가 없습니다 : 맨 위에가는
는[편집 2]
, 여기에서 수정 된 버그와 테스트 코드 (그건 당신이 그것을 원) 생각입니다 그 출력물을 인쇄 할 곳. 그 각각의 방법이 무엇을하는지에 대한 질문을 수정하거나 명확히 할 수 있습니까? –
왜 이것을 필요로합니까? –
joshng의 솔루션에 대한 저의 의견에 따라, 목적은 a) irb/콘솔 목적 (디버거가 아닌)과 b) 가능한지보기위한 것입니다. 그들이하는 일에 대한 편집을보십시오. – Sai