4

add-watchが clojureで行うのと同様の機能を Ruby で提供する方法はありますか? ブロック/プロシージャ/ラムダをハッシュなどのデータ構造のコールバックとして登録し、ハッシュの状態が変化するたびに呼び出される方法を探しています。

4

2 に答える 2

2

はい、Ruby でこれを行うことができますが、インフラストラクチャを自分で構築するか、それを行うライブラリを見つける必要があります。

Ruby の「ダック」タイピングにより、Hash インスタンスを期待するメソッドに、ハッシュのように見え、感じ、聞こえるクラス インスタンスを与えることができます。受信メソッドはオブジェクトをハッシュとして扱うだけで、すべて問題ありません。

その間、他のソフトウェアは、それが実際にObservableHash(またはあなたがそれを呼び出すことに決めたもの) であることを認識し、変更時のコールバック メソッドなどを登録します。

の作成を開始するのに役立つブログ投稿を次に示しますObservableHash

最後のヒント:すべての Hash メソッドを必ず実装してください。そうすれば、それを受け取る他のメソッドは、observable_hash とハッシュの違いを見分けることができなくなります。

Railsの「ハッシュ」は、実際にはハッシュのように見えるクラスインスタンスであると私は理解していActionController#paramsます(実際にはそうではありません)。ソースを調べて確認してください。

于 2012-08-28T13:22:24.953 に答える
1

アスペクト指向プログラミングが必要な場合の例を次に示します。

于 2012-08-28T13:12:07.903 に答える