Cake パターンを使用しているプロジェクトにいくつかのマクロを統合する必要があります。そのパターンにより、他の利点の中でもとりわけ、無数の輸入を回避することができたので、それを維持したいと考えています. 現在、トランクの外でテストしているいくつかの実験的なマクロで問題に直面しています。まず、Cake という名前のダミー システムを示します。
trait APiece {
class A
}
trait BPiece { this: APiece =>
def aMacro(a: A): Unit = () /* macro ??? */
}
trait CPiece { this: APiece with BPiece =>
def aMacroInvoker = aMacro(new A)
}
class Cake { this: APiece with BPiece with CPiece => }
APieceはクラスを定義し、BPieceは APiece で定義されたクラスを使用するマクロであると想定され、最後にCPieceがマクロを呼び出します。BPiece の実装をコーディングできなかったので、BPiece はマクロであるべきだと言いました。いくつかの方法を試しましたが、常に次のエラーでクラッシュします。
"macro implementation must be in statically accessible object"
マクロ コードを読むと、マクロを静的モジュールに含める必要があることが推測できます。システム構造を使用するマクロを展開する方法はありますか?