如何将折叠左侧运算符“:/”转换为scala中的foldLeft函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将折叠左侧运算符“:/”转换为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函数重写的正确方法?
答案
你几乎拥有它:
val merged2 = map2.foldLeft(map1) { case (acc, (k,v)) => acc + (k -> (v + acc.getOrElse(k, 0))) }
以上是关于如何将折叠左侧运算符“:/”转换为scala中的foldLeft函数?的主要内容,如果未能解决你的问题,请参考以下文章