fcs*_*fcs 6 scala case-class shapeless
让我们假设我们有一个共同的特质模型.
trait Model {
def id: String
def updated: Date
}
Run Code Online (Sandbox Code Playgroud)
我们有2个案例类来扩展这个特性.
case class C1(id: String, updated: Date, foo: String) extends Model
case class C2(id: String, updated: Date, bar: Int) extends Model
Run Code Online (Sandbox Code Playgroud)
是否可以编写如下所示的实用程序函数,该函数将Model作为参数并返回带有更新字段的更新值的副本?
object Model {
def update[T <: Model](model: T): T = {
model.copy(updated = new Date) // This code does not compile.
}
}
Run Code Online (Sandbox Code Playgroud)
copy是在您的案例类上定义的方法。不是基于你的基本特质Model。如果你有这样的情况怎么办:
trait Model {
def id: String
def updated: Date
}
case class C1(id: String, updated: Date, foo: String) extends Model
case class C2(id: String, updated: Date, bar: Int) extends Model
class NotACaseClass(val id: String, val updated: Date) extends Model
Run Code Online (Sandbox Code Playgroud)
NotACaseClass是 的一个非常有效的子代Model,您可以将它的实例传递给您的update函数,但祝您找到copy方法好运:)
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |