如何将参数传递给宏注释?

问题描述:

我希望得到StaticAnnotation的参数定义为:如何将参数传递给宏注释?

class Log(logTag: List[LogTag] = Info() :: Nil) 
     (implicit logger: String => Unit = a => {println(a)}) 
    extends scala.annotation.StaticAnnotation { 
    inline def apply(defn: Any): Any = meta { 
    val logTag = ??? //todo 
    val logger = ??? //todo 
    } 
} 

如何获得在metalogTaglogger函数值? 关于这一点,我似乎meta tutorials。但Lit只是指Int/Double等,而不是自定义类的类型。

您可以将this解构为scala.meta.Tree以获取类参数。举例http://scalameta.org/tutorial/#HowdoIpassanargumenttothemacroannotation%3F