7

既存のフィールドに基づいて、コンパイル時に動的にメソッドをオブジェクトに追加するアノテーションまたは特性を作成したいと考えています。私はクラス レベルの何かに興味がありますが、フィールド レベルの注釈 (またはその他のより細かいもの) も同様に扱います。

Scala の実装の詳細について尋ねる古いスタック オーバーフローの質問@BeanPropertyには、「これはコンパイラ プラグインですが、マクロでもこれを実行できる場合があります」と回答されました。Scala 2.10 でのマクロの公式 (実験的である場合) リリースを考えると、この種の機能は現在可能ですか?

4

1 に答える 1

8

更新:この回答は無効になりました。ユージーンのコメントを参照してください。

いいえ、まだできません。

2.10 には、これに匹敵する何もできない def マクロしか存在しません。2.11 では、世界は少し良くなりました。マクロ アノテーションと、メンバーをクラスに導入するための実装が既に存在します。しかし、それらはほんの数週間しか経っていないため、いくつかのまれなケースでしか機能しません. さらに、メンバーをクラスに導入する実装は、マクロ注釈の実装とは異なるブランチにあるため、それらを一緒に使用することはまだできません。

于 2013-03-17T16:59:33.657 に答える