如何在宏中获取Scala-macro-annotated类或对象的扩展类路径?

问题描述 投票:0回答:1

如果我编写了一个要应用于Scala对象或类的Scala宏,是否可以在宏中获取该带注释实体的扩展类路径? (我最终希望它作为一个字符串,由宏写入文件,原因。)

我需要该实体的封闭com.foo.bar包,或者直接从带注释的MyClass获取扩展的com.foo.bar.MyClass类路径的方法。

scala macros
1个回答
0
投票

好吧,不确定它是否是最好的方法,但是对我有用的解决方案是使用quasiquotes编译一个“探测”类,使用上下文:

import c.universe._ val probe = c.typecheck(q“”“{class $$$$ Pr0bE $$$$;()}”“”)

然后可以请求该“探测”的所有者,这是我的情况下的一个包,并跟随所有者到“root”,从那个和被注意者的名称构建annottee的完全限定的类路径。

© www.soinside.com 2019 - 2024. All rights reserved.