如何使用Scala元解析对象?
我试图使用Scala Meta编写注释,以便从现有对象生成另一个case类 但当我尝试这样做时:如何使用Scala元解析对象?,scala,metaprogramming,scalameta,Scala,Metaprogramming,Scalameta,我试图使用Scala Meta编写注释,以便从现有对象生成另一个case类 但当我尝试这样做时: 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],隐式方
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.dial)scala.meta.parsers.Parsed[scala.meta.Source]。
未指定的值参数转换、解析、方言。
MyObject.parse[Source].show[Structure];}
^
我很困惑,因为根据他们的教程,这就是我需要开始的
如何将此对象反射到所有属性中
谢谢
解析[源]
解析文本。你可以试试下面的方法
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
}
}
解析[源代码]
解析文本。你可以试试下面的方法
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
}
}
我还尝试了.parse[Type],这也不起作用。如何使用类元反射?似乎
scala.meta
是编译时。我不认为它可以像运行时的反射一样使用。我也尝试过使用.parse[Type],这也不起作用。如何使用类元反射?似乎scala.meta
是编译时。我认为它不能像运行时的反射那样使用。