有没有办法在 ruby 中提供与 add-watch 类似的功能?在 clojure 中呢?我正在寻找一种方法来将 block /proc/lambda 注册为数据结构上的回调,比如哈希,并在哈希状态发生变化时被调用。
最佳答案
是的,您可以在 Ruby 中执行此操作,但您需要自己构建基础架构或找到一个可以执行此操作的库。
因为Ruby's "duck" typing ,可以为期望 Hash 实例的方法提供一个外观、感觉和听起来都像哈希的类实例。接收方法只需将对象视为哈希,一切都会好起来的。
同时,您的其他软件会知道它实际上是一个ObservableHash
(或者您决定如何调用它。)并且您将注册您的回调-改变方法等
这是一个 blog post这将帮助您开始创建 ObservableHash
。
最后一个提示:确保实现所有 哈希方法。这样其他接收它的方法将无法分辨 observable_hash 和哈希之间的区别。
据我了解,Rails ActionController#params
“散列”实际上是一个看起来是散列(但实际上不是)的类实例。查找其来源以进行检查。
关于状态改变时的 ruby 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12159884/