【发布时间】:2014-04-21 13:08:48
【问题描述】:
假设我们有一个共同的特征模型。
trait Model {
def id: String
def updated: Date
}
我们有 2 个案例类扩展了这个特性。
case class C1(id: String, updated: Date, foo: String) extends Model
case class C2(id: String, updated: Date, bar: Int) extends Model
是否可以编写一个像下面这样的实用函数,它将模型作为参数并返回一个包含更新字段的更新值的副本?
object Model {
def update[T <: Model](model: T): T = {
model.copy(updated = new Date) // This code does not compile.
}
}
【问题讨论】:
-
@MilesSabin I've seen that abstraction over arity was mentioned,但这种过度工程几乎不是一个可行的选择(现在,你可以随意称我为“有偏见”甚至是白痴:-))。还是除此之外还有别的办法?
标签: scala case-class shapeless