【发布时间】:2021-11-12 16:04:48
【问题描述】:
我正在使用通用映射器从 scala 2.11 中的 DBModel 映射模型
它有一个方法定义为:
def fromModelToDBModel(m: T) : R
其中 T 是 Model 的类型,R 是 DBModel 的类型。
这个方法在几乎所有继承对象中的实现方式都是一样的,即:
override def fromModelToDBModel(p: RawModel): RawDBModelV1 = {
val values = RawModel.unapply(p).get
val makeDBModel = (RawDBModelV1.apply _).tupled
makeDBModel(values)
}
是否可以在基本 Trait 中以某种方式定义一个通用对象,以便我可以对其调用 apply/unapply?
我想实现的逻辑示例:
def fromModelToDBModel(m: T) : R = {
val values = Object[T].unapply(p).get
val makeDBModel = (Object[R].apply _).tupled
makeDBModel(values)
}
这将消除单独编写每个映射器的需要,使代码更加干燥。
【问题讨论】:
标签: scala generics types reflection