如何在scala中将左折叠运算符“:/”转换为foldLeft函数?

时间:2019-04-20 16:01:26

标签: scala foldleft

以下代码将两个映射的值求和成一个映射。

val merged = (map1 /: map2) { case (map, (k,v)) =>
    map + ( k -> (v + map.getOrElse(k, 0)) )
}

但是,我无法使用foldLeft()()函数对其进行转换。 这是我尝试过的,但无法有意义地进行。

val merged2 =  map2 foldLeft (map1) ((acc:Map[Int,Int], (k:Int,v:Int)) =>   acc + ( k -> (v + acc.getOrElse(k, 0)) ))

使用foldLeft函数重写的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您几乎拥有它:

val merged2 = map2.foldLeft(map1) { case (acc, (k,v)) =>  acc + (k -> (v + acc.getOrElse(k, 0))) }