【问题标题】:ruby callback when state changes状态改变时的红宝石回调
【发布时间】:2012-08-28 13:04:15
【问题描述】:

有没有办法在 ruby​​ 中提供与 add-watch 在 clojure 中类似的功能?我正在寻找一种方法将块/proc/lambda 注册为数据结构上的回调,比如哈希,并在哈希状态发生变化时被调用。

【问题讨论】:

  • 是的,有一种方法可以提供 Activerecord::Observer 中明显的功能

标签: ruby clojure


【解决方案1】:

是的,您可以在 Ruby 中执行此操作,但您需要自己构建基础架构或找到可以执行此操作的库。

由于Ruby's "duck" typing,可以为期望哈希实例的方法提供一个看起来、感觉和听起来都像哈希的类实例。接收方法可以把对象当作一个哈希,一切都会好起来的。

同时,您的其他软件将知道它实际上是ObservableHash(或您决定调用的任何名称。)并且您将注册您的回调更改方法等。

这里有一个blog post,它将帮助您开始创建您的ObservableHash

最后一个提示:一定要实现所有的哈希方法。这样接收它的其他方法将无法区分 observable_hash 和 hash 之间的区别。

据我了解,Rails ActionController#params "hash" 实际上是一个看起来像哈希(但实际上不是)的类实例。查找它的来源以检查它。

【讨论】:

  • 感谢@JonasElfström -- 非常有帮助。
【解决方案2】:

如果你想要的话,这里有一些面向方面编程的例子:

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 2013-06-23
    • 2017-04-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多