我想知道是否有可能做到这样,如果我有类似的东西
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。或者我做了一个检查,它也会加1。访问继承的任何方法或属性也会使变量加 1 ..
@access_times
t.is_a?(Test)
@access_times
Test
如果可能的话,基本上我想在.
语法中添加一些东西。
我不是在问这是好还是坏的代码,只是它是否可能以及如何完成。我通常不会使用它,因为我可以手动将增量逻辑添加到每个方法,并用方法替换所有直接实例变量访问(甚至像is_a?
和其他继承自的东西Object
)