scala将更新字段复制到案例类中

scala将更新字段复制到案例类中,scala,Scala,我想将一些字段更新到case类中。我有两个物体c1和c2。要通过c1将字段更新为c2吗 实现了下一个解决方案。使用copy和if语句更新 case class Ex(id: Option[Long] = None, id2: Option[String] = None) { def updateFields(e: Ex) = { this.copy( id = if (e.id.isDefined) e.id else id, id2 =

我想将一些字段更新到case类中。我有两个物体c1和c2。要通过c1将字段更新为c2吗

实现了下一个解决方案。使用
copy
if
语句更新

case class Ex(id: Option[Long] = None, id2: Option[String] = None)
  {
    def updateFields(e: Ex) = {
      this.copy(
        id = if (e.id.isDefined) e.id else id,
        id2 = if (e.id2.isDefined) e.id2 else id2,
      )
    }
  }
是否有执行此操作的最佳实践


比尔

您可以使用
Option.orElse
方法

  case class Ex(id: Option[Long] = None, id2: Option[String] = None) {
    def updateFields(e: Ex) = {
      this.copy(id = e.id.orElse(id), id2 = e.id2.orElse(id2))
    }
  }

您可以使用
Option.orElse
方法

  case class Ex(id: Option[Long] = None, id2: Option[String] = None) {
    def updateFields(e: Ex) = {
      this.copy(id = e.id.orElse(id), id2 = e.id2.orElse(id2))
    }
  }