从注释中获取lambda参数

时间:2016-06-23 19:33:25

标签: scala reflection lambda annotations

假设我们有一个注释:

@scala.annotation.meta.field
class MyAnnotation(param: String => String) extends StaticAnnotation

根据Remi T的回答here,如果param只是一个String,我们可以这样提取:

a.tree.children.tail.collect({ case Literal(Constant(id: String)) => id }).headOption

但是我们如何提取和使用 lambda表达式?它是Function(params, body),其中params是参数列表,body是表示函数体的Tree

可以将整个函数Tree转换为String然后使用解释器,但这是一个非常难看的解决方案(我甚至无法做到这一点)在实例化解释器期间遇到类路径的一些问题,我找不到任何建议。

0 个答案:

没有答案