4

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

4

2 回答 2

2

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

由于Ruby 的“鸭子”类型,一个期望 Hash 实例的方法可以被赋予一个看起来、感觉和听起来都像哈希的类实例。接收方法可以将对象视为哈希,一切都会好起来的。

同时,您的其他软件将知道它确实是一个ObservableHash(或您决定如何称呼它)。并且您将注册您的回调更改方法等。

这是一篇博客文章,可帮助您开始创建ObservableHash.

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

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

于 2012-08-28T13:22:24.953 回答
1

如果这是您所追求的,那么这里有一些面向方面编程的示例:

于 2012-08-28T13:12:07.903 回答