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

时间:2017-04-27 07:24:13

标签: scala-meta

我希望将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
  }
}

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

1 个答案:

答案 0 :(得分:0)

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