Я работаю со Scala и хочу создать класс с функцией, которая бы рекурсивно что-то добавляла к карте.
class Index(val map: Map[String, String]) {
def add(e: (String, String)): Index = {
Index(map + (e._1 -> e._2))
}
def addAll(list: List[(String, String)], index: Index = Index()): Index = {
list match {
case ::(head, next) => addAll(next, add(head))
case Nil => index
}
}
}
object Index {
def apply(map: Map[String, String] = Map()) = {
new Index(map)
}
}
val index = Index()
val list = List(
("e1", "f1"),
("e2", "f2"),
("e3", "f3"),
)
val newIndex = index.addAll(list)
println(newIndex.map.size.toString())
Я исключил этот код для печати 3, так как функция должна добавить3 записи на карте, но фактический вывод равен 1. Что я делаю не так и как это решить?
Онлайн-скрипка: https://scalafiddle.io/sf/eqSxPX9/0