単純なメソッド定義を持つ単純なクラスがあります
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
既存のインスタンスが変更の影響を受けても問題ありません (Printer のインスタンスが作成され、印刷が実行され、すぐに破棄されるため)