我已经动态定义了一个Scala类,但为了"正确"使用它,它需要有一个ScalaSig。
那么,如何在正常编译之外生成ScalaSig呢?也许是从树上?也许像:
val tb = runtimeMirror(getClass.getClassLoader).mkToolBox()
val classDef = """class MyRecord(x: String)"""
val tree = showRaw(tb.parse(classDef))
但是拾荒者从哪里来?
谢谢你的建议-Julian
Artisanal Pickle Maker将逐字节复制Scala腌制的签名(请参阅限制)。
事实证明,利用编译器的pickler阶段以及重用Pickler
的代码太具有挑战性了,所以我使用了PickleBuffer
、ShowPickled
和一大堆diff -y
来研究如何生成任意的pickle Scala sig。