【发布时间】:2015-01-24 08:25:25
【问题描述】:
我有一个 json 库,它通过遵循 Scala 中的类型类模式定义了一个 ReadCodec 的概念(它定义了如何读取 json)。此库使用 Shapeless' Typeclass 构造来为任何案例类免费派生 ReadCodec 的自动实例。
现在,我有一个代码生成器,它在 Scala 中生成不是案例类的类(但可能应该是)。我可以让代码生成器为我们现在拥有的每个类生成 ReadCodec 的实例。但是现在如果我希望生成的类支持某种新形式的序列化,我需要修改代码生成以输出这个新类型类的实例。
有没有办法我可以修改代码生成器以输出带有 LabelledGeneric 实例的类或其他可以利用为案例类生成(通过宏)自动实例的机制的方法?这样,生成的代码可以与任何使用 Shapeless'Typeclass 实现实例化的类型类模式互操作。
【问题讨论】:
-
当然,只需生成
LabelledGeneric实例。有什么困难/问题? -
@Imm 哈哈,有趣的是,我只是假设它不可能那么简单......仍然希望遇到问题,但我想我只需要尝试找出答案。谢谢你让我相信这可能真的有效。
-
@lmm 这是一个合理的问题——定义
LabelledGeneric实例并非易事(由于您需要引用单例类型等)。
标签: scala code-generation typeclass shapeless