状态改变时的红宝石回调

时间:2012-08-28 13:04:15

标签: ruby clojure

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

2 个答案:

答案 0 :(得分:2)

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

由于Ruby's "duck" typing,可以为需要哈希实例的方法提供一个外观,感觉和听起来像哈希的类实例。接收方法可以将对象视为哈希,一切都会好的。

同时,您的其他软件会知道它真的是ObservableHash(或您决定调用它的任何内容。)并且您将注册您的回调更改方法,等

这是一个blog post,可帮助您开始创建ObservableHash

最后一个提示:确保实现所有的Hash方法。这样,接收它的其他方法将无法区分observable_hash和hash。

据我所知,Rails ActionController#params“hash”实际上是一个似乎是哈希的类实例(但实际上并非如此)。查看其来源以查看它。

答案 1 :(得分:1)

以下是面向方面编程的一些示例,如果您正在追求的那样: