Created
June 8, 2016 11:24
-
-
Save joaquinpf-ds/9fa44ae0849955fa5dbb6b134319fdfe to your computer and use it in GitHub Desktop.
Tests de mapas mutables e inmutables en Scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object Application extends App { | |
// Mapa immutable con 'val' | |
val pepe = scala.collection.immutable.Map("k1" -> "v1", "k2" -> "v2") | |
// Compiler Error: Reassignment to val | |
// Es importante entender que como en el caso de abajo, se esta tratando | |
// de reasignar 'val' con el nuevo mapa, cosa que no puede hacerse por ser un 'val' | |
pepe -= "k1" | |
// Mapa immutable con 'var' | |
var pepe2 = scala.collection.immutable.Map("k1" -> "v1", "k2" -> "v2") | |
// Esto funciona, pero internamente lo que esta sucediendo es que la variable | |
// se esta reasignando con un mapa nuevo. Si bien estamos usando un 'var', el | |
// mapa de fondo sigue siendo immutable. | |
pepe2 -= "k1" | |
// Mapa mutable con 'val' | |
val pepe3 = scala.collection.mutable.Map("k1" -> "v1", "k2" -> "v2") | |
// Tenemos un 'val', pero como el mapa es mutable podemos cambiarlo. En ningun | |
// momento se intenta cambiar la referencia del 'val' en si, por lo que este | |
// caso funciona. | |
pepe3 -= "k1" | |
// Mapa mutable con 'var' | |
var pepe4 = scala.collection.mutable.Map("k1" -> "v1", "k2" -> "v2") | |
pepe4 -= "k1" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment