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

问题描述 投票:2回答:1

以下代码将两个映射的值合并为一个映射。

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函数重写的正确方法?

scala foldleft
1个回答
2
投票

你几乎拥有它:

val merged2 = map2.foldLeft(map1) { case (acc, (k,v)) =>  acc + (k -> (v + acc.getOrElse(k, 0))) }
© www.soinside.com 2019 - 2024. All rights reserved.