繁体   English   中英

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

[英]How to convert a fold left operator ":/" into the foldLeft function in scala?

以下代码将两个映射的值相加到一个映射中。

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))) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM