例如,我有两种标记类型:
trait Created
type CreatedDttm = LocalDateTime @@ Created
type CreatedTs = Timestamp @@ Created
此类型用于处理模型。第一个用于通用模型,第二个用于db
实体。
final case class Entity(created: CreatedDttm) // Common model
final case class EntityRow(created: CreatedTs) // DB model
我的资源中有一个转换器:
def toModel(e: EntityRow) = Entity(e.created.toLocalDateTime) // Does not compile
此转换不会编译,导致e.created.toLocalDateTime
返回LocalDateTime
,但Entity
需要LocalDateTime
由 标记Created
。
所以我必须改变我的转换来tag[Created](e.created.toLocalDateTime)
使这段代码编译。它有效,但是,恕我直言,它看起来有点难看。
Timestamp
被 标记Created
,并且一个新的LocalDateTime
也必须被相同的标记Created
。
有什么方法可以修改标记类型而无需重新标记新的修改值?