Складывание - это объединение последовательности элементов ввода в один элемент вывода. Элементы вывода и ввода должны иметь одинаковые типы в Scala. Вот определение fold
:
def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1
В вашем случае тип A1
равен Int
, но элемент вывода (тип суммы) равен mutable.Map
. Поэтому, если вы хотите построить Map
через итерацию, вы можете использовать foldLeft
или любые другие альтернативы, где вы можете использовать разные типы ввода и вывода. Вот определение foldLeft
:
def foldLeft[B](z: B)(op: (B, A) => B): B
Решение:
val l = collection.immutable.List(1, 2, 3, 4)
l.foldLeft(collection.immutable.Map.empty[Int, String]) { (e1, e2) =>
e1 + (e2 -> "abc")
}
Примечание: я не использую mutabe Map