如何将参数传递给宏注释?
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
块中的logTag
和logger
函数值?
关于这一点,我似乎meta tutorials。但是 Lit
只是指 Int
/Double
等,而不是自定义 class 类型。
您可以将 this
解构为 scala.meta.Tree
以获得 class 参数。有关示例,请参阅 http://scalameta.org/tutorial/#HowdoIpassanargumenttothemacroannotation%3F
我想获取定义为 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
块中的logTag
和logger
函数值?
关于这一点,我似乎meta tutorials。但是 Lit
只是指 Int
/Double
等,而不是自定义 class 类型。
您可以将 this
解构为 scala.meta.Tree
以获得 class 参数。有关示例,请参阅 http://scalameta.org/tutorial/#HowdoIpassanargumenttothemacroannotation%3F