合并长度列表,默认匹配项默认值

  • 本文关键字:默认值 默认 列表 合并 scala
  • 更新时间 :
  • 英文 :


im试图在Scala中配对两个列表,其中不匹配对应被默认值替换,这是我到目前为止所拥有的,但是您的所有人都以某种方式跌落了。

如何创建列表((a,a(,(b,empty(,(c,c((???

case class Test(id: Option[Int] = None)
val empty = Test()
val a = Test(Some(1))
val b = Test(Some(2))
val c = Test(Some(3))
val cache = List(a,b,c)
val delta = List(a,c)
//Trial 1
val newCache1 = cache.zipAll(delta,empty,empty)
//Tial 2
val newCache2 = for {
  c <- cache
  d <- delta
  if c.id == d.id
} yield (c,d)
//Tial 3
val newCache3 = for {
  c <- cache
  d <- delta
} yield if (c.id == d.id) (c,d) else (c,empty)

将三角洲变成地图,然后加入它们。

  val deltaMap: Map[Int, Test] =
    delta.flatMap(x => x.id.map(id => id -> x)).toMap
  val newCache: Seq[(Test, Test)] = cache.map { c =>
    c -> c.id.flatMap(deltaMap.get).getOrElse(empty)
  }

最新更新