Я читаю Seven Languages in Seven Weeks, чтобы получить представление о различных парадигмах программирования. В главе о Scala я обнаружил, что коллекция является неизменной (по крайней мере, от scala.collection.immutable
).
Однако есть пример, который меня смущает:Scala HashMap: не + = переназначить левую сторону?
scala> val hashMap = HashMap(0->0)
scala> hashMap += 1->1
scala> hashMap
res42: scala.collection.mutable.HashMap[Int,Int] = Map(1 -> 1, 0 -> 0)
но
scala> map = map + 2->2
<console>:9: error: reassignment to val
map = map + 2->2
ли +=
переназначения неизменяемой коллекции? Как это может быть +=
может переназначить val
HashMap
, в то время как =
не удается?
Кроме того, я опробовал другие коллекции (List
и Map
) и с «примитивным» (Int
) и +=
с ошибкой переназначения. Как HashMap s специальный? Я не читаю ничего особенного в Scala API, и я не могу найти определение для оператора +=
(я предполагаю, что это оператор, а не функция даже в Scala, а также на C++ или Java).
Извините за немой вопрос, но так как я новичок в Scala, у меня возникают трудности с поиском ресурсов самостоятельно.
Принимаются за ссылки. Я знал, что мне не хватало легкой точки зрения, но я следую за книгой шаг за шагом, и это предложение: «скопируйте и вставьте, прежде чем пытаться закодировать сами», и я пропустил тот факт, что я импортировал «изменчивый HashMap» (на самом деле ссылка, на которую я смотрел, для «неизменной версии»). – ThanksForAllTheFish