在Scala中动态创建类属性

时间:2014-12-12 02:04:49

标签: scala

是否可以动态创建类(或向类添加属性),例如从Scala中的外部文件加载字段名称和类型?

这是Representing nested structures in scala

的后续行动

3 个答案:

答案 0 :(得分:3)

可以通过宏来实现这一点,并且有两种技术可以通过不同的权衡来实现。请参阅我们与Travis Brown的联合谈话,以获取更多信息以及示例实施的链接:https://github.com/travisbrown/type-provider-examples/blob/master/docs/scalar-2014-slides.pdf?raw=true

答案 1 :(得分:2)

您可以从数据结构描述中声明和编译Scala类。它要求你a)构造一个语法正确的类描述并将其保存到文件(或等效的),然后b)将该类描述编译为目标代码(即.class文件)。然后,您可以加载该类并使用它。

这不适合胆小的人。您需要了解翻译,编译,类加载和动态类绑定的过程。更重要的是,你必须回答如何在程序中实际使用它。

动态类创建的一个示例发生在Scala Play框架中,其中演示模板文件被翻译成Scala并编译成类文件,然后可以从其他Scala源代码中引用。

答案 2 :(得分:1)

您无法使用动态属性创建案例类。要实现您的要求,您可以使用Map