我想知道是否有可能讓這個,如果我有這樣的事情重寫對象屬性訪問
class Test
attr_reader :access_times
def initialize
@access_times = 0
end
def get_two
2
end
...
end
t = Test.new
那對t
任何訪問將運行的代碼實際運行的方法實施前的特定部分?
例如,如果我突然決定說t.get_two
,我使用了.
語法的事實會被1.增加@access_times
也許我做了檢查t.is_a?(Test)
,它也將增加@access_times
由1.訪問任何方法或屬性繼承Test
也將增加變量1.
基本上我想添加一些東西到.
語法如果可能的話。
我不是問這是好還是壞代碼,只是它是否可行以及如何完成。我通常不會使用它,因爲我可以將增量邏輯手動添加到每種方法,並用方法替換所有直接實例變量訪問(甚至像is_a?
和其他東西繼承自Object
)
我使用缺少方法作爲臨時解決方案,直到找到一個更好的方法來完成它。將研究鏈接和委派的方法。 – MxyL 2012-08-08 00:38:44