如何在无形中创建生成的对象

时间:2018-11-02 15:21:10

标签: scala generic-programming shapeless

假设我有一个通用类型的规范化数据库模型,如下所示:

case class BaseModel(id: String, 
                     createdBy: String,
                     attr1: Option[String] = None,
                     attr2: Option[Int] = None, 
                     attr3: Option[LocalDate] = None)

给定一个BaseModel序列,如果某个特定Option属性的 all 字段未填充,可以无形地为我创建一个简化的模型吗?

例如,假设所有attr1字段均为空。 无需我事先指定对象就可以无形地创建看起来像这样的通用对象吗?

case class BaseModel(id: String, 
                     createdBy: String,
                     attr2: Option[Int] = None, 
                     attr3: Option[LocalDate] = None)

1 个答案:

答案 0 :(得分:1)

Shapeless可以做的是,在给定两个case类的情况下,从另一个对象创建一个对象。

include <SDL2/SDL.h>

但是Shapeless无法创建新的case类。如果需要自动创建新的案例类,则可以编写宏。