Ho un WeakTypeTag
di qualche tipo nella mia macro, e voglio generare il codice come segue:È possibile generare Apply da WeakTypeTag all'interno di una macro scala?
macroCreate[SomeObject] // => SomeObject(1)
La definizione di una macro sarà qualcosa di simile:
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)))
}
Il problema è , come ottengo Select
per il tipo specificato?
È possibile utilizzare una soluzione alternativa per convertire il tipo in stringa, suddividere su "."
e quindi creare un numero Select
dall'elenco di stringhe, ma ciò sembra intrusivo.
È possibile creare un Select
direttamente dal tag di tipo?
Ho aggiunto una piccola modifica ('newTermName' in Seleziona), perché scalac genera su di esso un avviso di deprecazione. Grazie! – Rogach
Oh, giusto grazie! Digitando troppo velocemente ... –