2013-10-08 5 views
1

클래스 Parent과 클래스 Child ( 하위 서브 클래스 Parent)을 가지고 있습니다.다른 이름의 메소드로 Ruby 상위 클래스 확장하기

  • Parentaaaa이라고하는 방법이있다.
  • Child에는 bbbb이라는 메서드가 있습니다.

    • 내가 aaaa의 확장으로 bbbb 원하는 :

    이 내가 달성하고자하는 것입니다. Child 개체에서 aaaa을 호출하면 aaaa이 정상적으로 수행되고, 그 외의 경우는 bbbb이 실행됩니다.

  • bbbb을 호출하면 정상적으로 수행 할 작업 (aaaa 실행 후 bbbb에있는 작업)을 수행합니다.

이것은 내가하고 결국 무엇을 :

class Parent 

    def aaaa 
    print "A" 
    end 

end 

class Child < Parent 

    alias_method :original_aaaa,:aaaa 
    def bbbb 
    original_aaaa 
    print "B" 
    end 
    alias_method :aaaa,:bbbb 

end 

c = Child.new 
c.aaaa # => AB 
c.bbbb # => AB 

작동 그것. 그렇 겠지. 그러나 그것은 정말로 hackish하게 느꼈다. 게다가 이것의 단점은 bbbb을 정의하기 전이나 후에 동일한 이름을 가진 aaaa을 확장하고 싶다면 다소 이상해집니다.

더 간단한 방법이 있나요?

+3

질문은 ... 왜 * *! – Pete

+0

나는 이것을하는 이유를 볼 수 있었다. 이 질문을 처리하는 방법에 대한 의견이 있습니다. http://stackoverflow.com/questions/2564391/how-do-i-call-a-super-class-method – timpone

+0

"자녀"란 무엇을 의미합니까? 서브 클래스를 의미합니까? – sawa

답변

4
class Parent 
    def aaaa 
    print "A" 
    end 
end 

class Child < Parent 
    def aaaa 
    super 
    print "B" 
    end 
    alias bbbb :aaaa 
end 
+1

질문을 읽 자마자 명백한 대답으로 보였습니다.하지만 OP가 어떻게 질문을했는지에 대한 정교함으로 인해 저는 '최고'가 해결책을 제시하는 데 충분한 전략이 아니라고 믿었습니다. 귀하의 답변에 대한 그들의 답변을 기다리겠습니다. –

+1

@NewAlexandria : 아니, 난 그냥 바보 야. – Voldemort

+1

멍청한 질문을 할만 큼. –