状态改变时的 ruby​​ 回调

标签 ruby clojure

有没有办法在 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/

相关文章:

clojure - 在 Racket 中Clojure的迭代函数等效于什么

Clojure:我的扁平化实现有什么问题?

clojure - 为什么在此示例中使用 reducer 没有显着加速?

clojure - 惰性定义代理

ruby - Chef LW 资源属性默认值如何引用另一个属性?

arrays - 寻求 `zip` 的变化

ruby-on-rails - update_attributes ruby​​ on rails 中的数据

ruby-on-rails - 如何在 Rails 表单的文本区域中渲染部分内容?

scala - clojure在scala中迭代等效?

ruby-on-rails - Rail 片段缓存如何使您的应用程序受益,即防止数据库调用?