我有一個類Parent
和類Child
(這是一個Parent
孩子子)。擴展Ruby的父類的方法有不同的命名方法
Parent
有一個方法叫做aaaa
。Child
有一個方法稱爲bbbb
。
這就是我想要達到的目標:
- 我想
bbbb
是的aaaa
的延伸。如果我在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
它工作。我猜。但它感覺真的很黑。另外,這樣做的一個缺點是,如果我想要在定義bbbb
之前或之後擴展aaaa
同名,事情會變得有點奇怪。
有沒有更簡單的方法來實現這一目標?
問題是...... *爲什麼* ?! – Pete
我可以看到這樣做的原因。這個問題有一些關於如何處理這個問題的想法: http://stackoverflow.com/questions/2564391/how-do-i-call-a-super-class-method – timpone
你是什麼意思的「孩子」?你的意思是子類嗎? – sawa