2016-12-27 43 views
0

我正在尝试使用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]

我怎么能体现这个对象循环所有属性?

感谢

回答

0

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 
    } 
} 
+0

我也试着做.parse [类型],这也不起作用。我如何使用meta反射? – sowen

+0

看起来'scala.meta'是编译时。我不认为它可以像运行时反射一样使用。 –

+0

啊,我明白了......我错过了。太糟糕了。谢谢 – sowen