Pregunta

Me acaba de descubrir esta sintaxis para una Map Scala (utilizado aquí en mutable formulario)

val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)

Ahora no estoy seguro de si esto es sintáctica azúcar integrado en el lenguaje, o si algo más fundamental está pasando aquí que implica el hecho de que un mapa se extiende un PartialFunction. Podría explicar alguien?

¿Fue útil?

Solución

Si se refiere a (sería bueno si pudiera ser más explícito)

m("Hello") = 5

que tiene por objeto el azúcar sintáctica para

m.update("Hello", 5)

independiente de lo que es m. Esto es análogo a

m("Hello")

que es el azúcar sintáctica para

m.apply("Hello")

(sólo estoy leyendo "Programación en Scala".)

Otros consejos

@starblue es correcta. Observe que también puede hacer cosas creativas con más update como los valores que vuelven otro de lo que fue asignado. Por ejemplo:

val a = Map(1 -> "one")      // an immutable Map[Int, String]
val b = a(2) = "two"
val c = b(5) = "five"
val d = c(1) = "uno"

d == Map(1 -> "uno", 2 -> "two", 5 -> "five")       // => true

Esto funciona porque immutable.Map#update devuelve una instancia de la nueva Map. Se parece un poco extraño en el ojo C-entrenado, pero uno se acostumbra a ella.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top