有沒有辦法在Ruby中插入更多的代碼到幾個函數的末尾?在函數的末尾添加更多代碼
這裏我有一些方法
def foo
# do something
end
def bar
# do something else
end
現在我想提出一個代碼行像p "#{__method__}"
每個功能foo
和bar
結束。無論如何要這樣做?
有沒有辦法在Ruby中插入更多的代碼到幾個函數的末尾?在函數的末尾添加更多代碼
這裏我有一些方法
def foo
# do something
end
def bar
# do something else
end
現在我想提出一個代碼行像p "#{__method__}"
每個功能foo
和bar
結束。無論如何要這樣做?
你想要的東西不能完成,但類似的東西你可以動態地使用元編程。 Method#name
會給你同樣的結果,當你打電話給__method__
時,你會下注什麼。這裏向您展示的邏輯代碼,我現在在想:
def foo
x = 2
end
def bar
y = 3
end
[:foo,:bar].each do |m|
method(m).instance_eval{ val = call; puts "#{name} returned #{val * 2} after multiply by 2"}
end
輸出
foo returned 4 after multiply by 2
bar returned 6 after multiply by 2
感謝您的緊急回覆。其實我想在每個函數的末尾做加法過程,但必須有'__method__'。順便說一句,你的評論可以幫助我,我會盡力這樣做。 – yeuem1vannam
如何將這些邏輯代碼添加到'foo'和'bar'函數中,並且僅當我調用'foo'時纔會調用這些代碼?你的想法很好,但是當我叫'foo'時,返回仍然是'2'。 – yeuem1vannam
@PhươngJLêH試試我編碼的方式......我不知道你正在使用的實際代碼..我向你展示了什麼,*提示* .. :) –
怎麼樣用一個函數指針作爲參數的包裝功能? – Nick
請參閱此解決方案http://stackoverflow.com/questions/1199179/is-it-possible-to-run-code-after-each-line-in-ruby/20661999#20661999只是試過它,但張貼在不同的線程。有趣的任務 –
@ Igor:謝謝你有用的鏈接。我沒有找到鏈接。 – yeuem1vannam