說我有這個類:如何幹淨地「重新連接」Ruby中的分離方法?
class Foo
def destroy_target(target)
Missile.launch(target)
end
end
我想暫時中性的Foo
的破壞力,例如用於測試目的,所以我這樣做:
backup = Foo.instance_method(:destroy_target)
class Foo
def destroy_target(target)
Pillow.launch(target)
end
end
我的問題是:如何將原始方法「重新附加」到Foo
,好像它從未被覆蓋過?
我知道我能做到這一點:
class Foo
def destroy_target(target)
backup.bind(self).call(target)
end
end
但顯然這不是最佳的,因爲我現在包裝原始的功能。我希望能夠無限次地分離和重新附加該方法,而不會增加任何開銷。
問了一個不同的方法;我如何將DetachedMethod
附加到「正確」類中,即不定義調用分離函數的新方法。
注:我不感興趣,臨時改變一個類的功能的替代方法。我特別想知道如何用不同的方法替換一個方法,然後乾淨地恢復原始方法。
'backup = Foo.instance_method(:destroy_target)'''s' –
您是否想要替換特定'Foo'實例或類全等的方法,即所有'Foo'? – Stefan