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

How do I pass an argument to the macro annotation?

我想获取定义为 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
  }
}

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

您可以将 this 解构为 scala.meta.Tree 以获得 class 参数。有关示例,请参阅 http://scalameta.org/tutorial/#HowdoIpassanargumenttothemacroannotation%3F