create concatenate scala collections containers scala-collections

concatenate - mutable vs. inmutable en las colecciones de Scala



create set scala (2)

Inmutable significa inmutable. val hace una referencia incambiable, lo que significa que no puede asignar un valor a un val una vez que se ha inicializado. Las colecciones inmutables hacen que la colección sea inmutable, no la referencia a ella. Cada vez que modifica una colección inmutable, se produce otra colección en lugar de modificar la colección original in situ. La mayoría de las colecciones tienen versiones inmutables y mutables, pero hay excepciones, por supuesto.

Soy bastante nuevo en Scala y trato de entender la jerarquía de las colecciones. Veo que hay una distinción entre colecciones "mutables" e "inmutables", pero no entiendo lo que esto significa realmente en el nivel de implementación y cómo esto se relaciona con val y var . ¿Alguien puede darme alguna idea sobre esto? Además, ¿cada clase de colección tiene una versión "mutable" y una versión "inmutable", o hay algunas clases que solo pueden ser "mutables" o "inmutables"?


Mutable significa que puede modificar la colección en el lugar. Por lo tanto, si tiene una colección c y agrega un elemento con += , entonces c ha cambiado, y lo mismo ocurre con cualquier otra referencia a esa colección.

Inmutable significa que el objeto de colección nunca cambia; en cambio, crea nuevos objetos de recopilación con operaciones como + o ++ , que devuelven una nueva colección . Esto es útil en algoritmos concurrentes, ya que no requiere bloqueo para agregar algo a una colección. Puede ser a costa de algunos gastos generales, pero esta propiedad puede ser muy útil. Las colecciones inmutables de Scala son estructuras de datos completamente persistentes .

La diferencia es muy similar a la que existe entre var y val , pero val cuenta que:

  1. Puede modificar una colección mutable vinculada a un val in situ, aunque no puede reasignar el valor val
  2. no puede modificar una colección inmutable in situ, pero si está asignada a una var , puede reasignar esa var a una colección creada a partir de ella mediante una operación como + .

No todas las colecciones existen necesariamente en variantes mutables e inmutables; la última vez que lo comprobé, solo se admitían colas de prioridad mutables.