3

Scala の @BeanProperty が変更イベントを生成することに関するこの質問のフォローアップとして: var フィールドに何らかのカスタム アノテーション (たとえば、@Property) を付けると、プロパティ変更イベントを発生させるために必要なコードが生成されるという動作を完全に実装するには、何が必要でしょうか? それを行う唯一の方法は、コンパイラ プラグインを作成することですよね?

より一般的に: Scala のコンパイラで注釈を処理する標準的な方法 (Java など) はありますか?

4

1 に答える 1

2

これは、Java の場合と同じように、おそらく cglib などを使用して、プロキシを使用して実行できる場合があります。コンパイラプラグインでもこれを行うことができますが (あなたが正しく述べているように)、汎用ライブラリ以外のものを作成している場合は、少し過剰になる可能性があります!

はるかに優れた解決策は、getter メソッドと setter メソッドを手動で記述して、これらのイベントを発行することです。コードをクリーンに保つことに関心がある場合は、これらを常にトレイトに移動できます。


この問題に対する少し異なるアプローチとして、Naftoli Gugenhem はGitHub に「リアクティブ」ライブラリを用意して、関数型リアクティブ プログラミングを支援しています。これは、おそらく、監視可能なプロパティのイベント駆動型モデルよりも優れたパラダイムです。

ObservableBuffer クラスは、探し始めるのに適した場所です。

于 2011-02-11T09:23:20.180 に答える