하는 방법을 다시 정의하는 다른 클래스의 방법 인쇄에 몇 가지 여분의 물건을 추가하여 인쇄 방법을 다시 정의합니다는 데 내가 간단한 방법 정의</p> <pre><code>class Printer def print p '1' end end </code></pre> <p>그리고 지금은 별도의 스크립트 소개와 간단한 클래스를
class Printer
alias :old_print :print
def print
old_print
p '2'
end
end
프로그래밍 방식으로이 작업을 수행 할 수 있습니까?
module Test
def self.redefine_print(arg)
# redefine Printer's print method so that it will print all of the stuff it should
# print, followed by the arg I specified
end
end
그래서 샘플 상호 작용처럼 보일 수 있습니다
>>>a = Printer.new
>>>a.print
1
>>>Test.redefine_print("new stuff")
>>>a.print
1
new stuff
>>>Test.redefine_print("more")
>>>a.print
1
new stuff
more
기존의 인스턴스가 프린터의 인스턴스가 생성되기 때문에, 그 인쇄를 (변경에 의해 영향을하고 즉시 배치되는 경우는 괜찮습니다)
메서드를 재정의하려는 특별한 이유가 있습니까? 프린트 할 물건을 더 추가하는'Printer' 메소드를 가지고 계시지 않겠습니까? –
당신은 프로그래밍 방식으로 * 수행하고 있습니다. 클래스 정의 밖에서 똑같은 일을 할 수있는 이유가 없습니다. 그건 ... 목적은 무엇입니까? 머리말/꼬리말/등을 추가하면됩니다. 당신은 그것을 위해 메타 프로그래밍을 할 필요가 없습니다. –
내가 사용한 예제는 꽤 지나치게 단순화되었고, 그럴 수 있는지 여부를보기위한 것이었다. (다른 클래스의 다른 메소드를 재 정의하는 메소드). 내 솔루션은 아마 @RenatoZannon이 언급 한 라인을 따라 뭔가있을 것입니다. – MxyL