【问题标题】:How do I pass an argument to the macro annotation?如何将参数传递给宏注释?
【发布时间】:2017-04-27 16:44:02
【问题描述】:

我想获取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 等,而不是自定义类类型。

【问题讨论】:

    标签: scalameta


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 2018-05-16
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多