我想制作一个案例类的副本,并使用第二个案例类中的可选值对其进行更新。
case class A(
id: Int,
a: String,
b: String,
c: String)
case class Update(
a: Option[String],
b: Option[String],
c: Option[String])
我可以复制的最有效方法是什么A
,用来自的值更新字段Update
那些不是None
?我想避免制作涉及所有可能排列的匹配/大小写语句Some/None
值在Update
, 如果可能的话。
所有案例类都有一个复制方法。
http://docs.scala-lang.org/tutorials/tour/case-classes.html(找到复制术语)
val a = A(1, "", "", "")
val update = Update(None, "scalaz".some, None)
val b = a.copy(
b = update.b.getOrElse(a.b)
)
另请检查以功能方式复制深层嵌套对象的镜头模式:
http://eed3si9n.com/learning-scalaz/Lens.html
一旦你的对象是由其他对象等组成的,使用copy
方法。 Scalaz 的透镜图案实现是一个很好的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)