2016-12-27 12 views
0

기존 개체에서 다른 사례 클래스를 생성 할 수 있도록 스칼라 메타를 사용하여 주석을 작성하려고합니다.개체를 스칼라 - 메타 파싱하는 방법은 무엇입니까?

그러나 나는이 작업을 수행하려고하면

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], 암시 적 dialect : scala.meta.Dialect) scala.meta. 구문 분석기 [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 [유형을하려고 노력 ]도 작동하지 않습니다. 리플렉션과 같은 메타를 어떻게 사용할 수 있습니까? – sowen

+0

'scala.meta'가 컴파일 타임 인 것으로 보입니다. 런타임시 반영과 같이 사용할 수 있다고는 생각하지 않습니다. –

+0

아, 알겠습니다 ... 나는 그것을 놓쳤습니다. 너무 나빴어. 감사 – sowen