2016-12-27 86 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