我有一个带有简单方法定义的简单类
class Printer
def print
p '1'
end
end
现在我介绍一个单独的脚本,它通过添加一些额外的东西来重新定义打印方法来打印
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
如果现有实例受到更改的影响是可以的(因为将创建打印机的任何实例,进行打印,然后立即处置)