在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