如何使用Scala-Meta Parse对象?

时间:2016-12-27 20:41:54

标签: scala metaprogramming scala-meta

我正在尝试使用Scala Meta编写注释,以便我可以从现有对象生成另一个案例类。

但是当我尝试这样做时:

MyObject.parse[Source].show[Structure]

我收到了这个错误:

错误:(5,20)没有足够的方法解析参数:(隐式转换:scala.meta.common.Convert [domain.MyObject.type,scala.meta.inputs.Input],隐式解析:scala.meta .parsers.Parse [scala.meta.Source],隐式方言:scala.meta.Dialect)scala.meta.parsers.Parsed [scala.meta.Source]。 未指定的值参数转换,解析,方言。 MyObject.parse [来源] .show [结构];}                   ^

我很困惑,因为根据他们的教程,我需要从头开始 http://scalameta.org/tutorial/#.parse[T]

如何反映此对象以循环遍历所有属性?

谢谢

1 个答案:

答案 0 :(得分:2)

parse[Source]解析文字。您可以尝试以下

import scala.meta._
"object MyObject".parse[Source].get.show[Syntax]

如果您要创建注释,则它可能如下所示:

@MyAnnotation
object MyObject

在另一个模块中:

import scala.meta._
class MyAnnotation extends StaticAnnotation {
  inline def apply(defn: Any): Any = meta { 
    defn.show[Syntax]
    defn
  }
}