5
私は私のマクロでいくつかのタイプのWeakTypeTag
を持っており、次のように私は、コードを生成したい:スカラマクロ内のWeakTypeTagからApplyを生成することは可能ですか?
macroCreate[SomeObject] // => SomeObject(1)
マクロの定義は次のようなものになります。問題がある
def macroCreate[A] = macro _macroCreate[A]
def _macroCreate[A](c: Context)(implicit wtt: c.WeakTypeTag[A]) = {
c.Expr(Apply(Select(???, newTermName("apply")), List(c.literal(1).tree)))
}
、どのように私は与えられたタイプのSelect
を得ますか?
タイプを文字列に変換し、"."
に分割して文字列のリストからSelect
を作成するという回避策を使用できますが、これはハッキーです。
タイプタグから直接Select
を作成することはできますか?
scalagが廃止予定の警告をスローするため、小さな編集(Selectに 'newTermName')を追加しました。ありがとう! – Rogach
ああ、ありがとう!入力が速すぎます... –