У меня есть следующий код:Как мне получить доступ к родовому типу в аннотации макросов в Scala?
@compileTimeOnly("enable macro paradise to expand macro annotations")
class typedTable[T] extends StaticAnnotation {
def macroTransform(annottees: Any*): Table = macro TableGenerator.impl[T]
}
object TableGenerator {
def impl[T](c: whitebox.Context)(annottees: c.Expr[Any]*): c.Expr[Table] = {
import c.universe._
val tpe = weakTypeOf[T] // This doesn't work
...
}
}
И я не могу понять, как получить доступ к TypeTag для «T» в Macro Аннотация. Я видел другие сообщения, которые содержат туманную ссылку на то, как можно получить доступ, но я не могу точно понять, как я должен получить к нему доступ в этом контексте.
Прошу прощения, но я все еще очень новичок в Макросах, можете ли вы объяснить немного больше, что мне нужно сделать? Я хочу перебирать поля в основном конструкторе, предполагая, что T является классом case. – darkfrog
Посмотрите на это: http://stackoverflow.com/questions/19379436/cant-access-parents-members-while-dealing-with-macro-annotations, и, надеюсь, это ответит на ваш вопрос. Пожалуйста, не стесняйтесь спрашивать больше, если вы застряли. –