如何将参数传递给宏注释?
问题描述:
我希望得到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
等,而不是自定义类的类型。
答
您可以将this
解构为scala.meta.Tree
以获取类参数。举例http://scalameta.org/tutorial/#HowdoIpassanargumenttothemacroannotation%3F