2013-07-12 4 views
1

동적으로 스칼라 클래스를 정의했지만 "올바르게"사용하려면 ScalaSig가 있어야합니다.나만의 ScalaSig를 생성하려면 어떻게해야합니까?

그렇다면 일반 컴파일 외부에서 어떻게 ScalaSig를 생성 할 수 있습니까? 아마도 나무에서 왔을 까?

val tb = runtimeMirror(getClass.getClassLoader).mkToolBox() 
val classDef = """class MyRecord(x: String)""" 
val tree = showRaw(tb.parse(classDef)) 

을하지만 어디 피클 러는 올 않습니다 어쩌면 좋아? 어떤 조언 -Julian

+0

클래스를 정의하기 위해 도구 상자 사용을 고려한 적이 있습니까? 그런 다음 필요한 서명을 자동으로 생성합니다. –

+0

Eugene, 그렇습니다.하지만 클래스 정의는 런타임에 발생합니다. 툴박스가 컴파일시에만 작동한다고 생각하면 맞습니까? 타입 매크로에 대해 얼마나 흥분했는지 말할 수 있습니까? –

+1

도구 상자는 런타임에 작동합니다. 이 풀 요청은 공개적으로 볼 수있는 클래스를 정의 할 수있게 해줍니다 : https://github.com/scala/scala/pull/2662,하지만 2.11입니다. 한편, 2.10에서는 https://gist.github.com/xeno-by/5845539를 사용할 수 있습니다. 무언가가 작동하지 않으면 알려주세요. –

답변

0

Artisanal-Pickle-Maker에 대한

감사는 스칼라 절인 서명을 바이트 단위를 (제한 사항 참조) 재생됩니다.

, 컴파일러의 피클 러 단계뿐만 아니라 Pickler의 코드의 재사용을 활용하는 것은 너무 어려운 증명, 그래서 대신 내가 임의 절인 스칼라 시그마를 생성하는 방법을 알아 내기 위해 PickleBuffer, ShowPickled 및 전체 많은데 diff -y을 사용했다.