【发布时间】:2015-12-20 11:05:57
【问题描述】:
我正在使用 Play2+Scala+ReactiveMongo 构建一个 Web 应用程序。由于mongodb 并不要求所有文档都具有相同的结构,因此我大量使用以Options 作为参数的案例类来实现模型。例如:
case class PersonInfo(address: Option[String],
telephone: Option[String],
age: Option[Int],
job: Option[String])
case class Person(id: UUID, name: String, info: PersonInfo)
现在假设我想合并两个 PersonInfo 对象,例如在更新函数中。我现在做的是:
val updPInfo = old.copy(address = new.address orElse address,
telephone = new.telephone orElse telephone,
age = new.age orElse age,
job = new.job orElse job)
这样我就有了一个对象,该对象具有由new 对象指定的新值和其余值的旧值。
这实际上工作得很好,但是看到参数列表何时增长有点难看。
有没有更优雅的方法来做到这一点?
【问题讨论】:
标签: scala playframework-2.0 reactivemongo