有没有办法在ruby中提供与add-watch在clojure中所做的相似的功能?我正在寻找一种方法来将块/ proc / lambda注册为数据结构的回调,比如哈希,并且只要哈希状态发生变化就会被调用。
答案 0 :(得分:2)
是的,您可以在Ruby中执行此操作,但您需要自己构建基础结构或找到可以执行此操作的库。
由于Ruby's "duck" typing,可以为需要哈希实例的方法提供一个外观,感觉和听起来像哈希的类实例。接收方法可以将对象视为哈希,一切都会好的。
同时,您的其他软件会知道它真的是ObservableHash
(或您决定调用它的任何内容。)并且您将注册您的回调更改方法,等
这是一个blog post,可帮助您开始创建ObservableHash
。
最后一个提示:确保实现所有的Hash方法。这样,接收它的其他方法将无法区分observable_hash和hash。
据我所知,Rails ActionController#params
“hash”实际上是一个似乎是哈希的类实例(但实际上并非如此)。查看其来源以查看它。
答案 1 :(得分:1)