我有一个类Parent和一个类Child(它是 的子类Parent)。
Parent有一个方法叫做aaaa.Child有一个方法叫做bbbb.
这就是我想要实现的目标:
- 我想
bbbb成为aaaa. 如果我调用aaaa一个Child对象,它将运行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。另外,这样做的一个缺点是,如果我想aaaa在定义之前或之后使用相同的名称进行扩展bbbb,事情就会变得有点奇怪。
有没有更简单的方法来实现这一点?