我有一个类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