マクロにWeakTypeTag
何らかのタイプがあり、次のようにコードを生成したいと考えています。
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
タイプタグから直接作成することは可能ですか?