在Ruby中,我希望在执行期间的任何时候给定变量发生更改时,都会将消息打印到控制台。如何在Ruby中更改变量时自动登录到控制台?
我该如何解决这个问题?我是否应该修改将值分配给变量的方法?
我只能找到这个相关的问题Hook to be called when a variable changes答案建议重新定义#freeze,但这种方法有局限性。也不是看起来正确。 没有更好更一致的解决方案吗?
在Ruby中,我希望在执行期间的任何时候给定变量发生更改时,都会将消息打印到控制台。如何在Ruby中更改变量时自动登录到控制台?
我该如何解决这个问题?我是否应该修改将值分配给变量的方法?
我只能找到这个相关的问题Hook to be called when a variable changes答案建议重新定义#freeze,但这种方法有局限性。也不是看起来正确。 没有更好更一致的解决方案吗?
添加您自己的getter/setter。
实施例:
class Person
def name
@name
end
def name=(s)
@name=s
puts 'name has changed!'
end
end
这是不可能的。
无论是set_trace_func
还是TracePoint
API支持跟踪变量赋值,并...
我应该猴补丁用于为变量分配值的方法?
......这种方法不存在。
我猜,Ruby并没有将变量视为程序的面向对象结构的一部分。只有对象和方法。
如果你在一个对象上有一个属性,你可以通过像'x ='这样的writer方法来捕获所有的调用。你有一些示例代码? – tadman