Ich habe ein WeakTypeTag
irgendeiner Art in meinem Makro, und ich möchte, um Code zu generieren, wie folgt:Ist es möglich, Apply von WeakTypeTag innerhalb eines Scala-Makros zu generieren?
macroCreate[SomeObject] // => SomeObject(1)
Die Definition eines Makros in etwa so sein wird:
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)))
}
Das Problem ist, , wie bekomme ich Select
für den gegebenen Typ?
Ich kann eine Problemumgehung des Konvertierens des Typs in Zeichenfolge, Aufteilen "."
und dann Erstellen eines Select
aus der Liste der Zeichenfolgen verwenden, aber das scheint hacky.
Ist es möglich, ein Select
direkt vom Typ Tag zu erstellen?
Ich habe eine kleine bearbeiten ('newTermName' in Select), weil scalac deprecation Warnung auf sie wirft. Vielen Dank! – Rogach
Oh, richtig danke! Zu schnell tippen ... –