Как преобразовать левый оператор сгиба ": /" в функцию foldLeft в scala? - PullRequest
2 голосов
/ 20 апреля 2019

Следующий код суммирует значения двух карт в одну карту.

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 Ответ

2 голосов
/ 20 апреля 2019

У вас почти было это:

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