Domanda

Ho appena scoperto questa sintassi per una Map scala (usato qui in mutevole modulo)

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

Ora io non sono sicuro se questo è sintattica zucchero costruito alla lingua, o se qualcosa di più fondamentale sta succedendo qui che coinvolgono il fatto che una mappa si estende un PartialFunction. Qualcuno potrebbe spiegare?

È stato utile?

Soluzione

Se vuoi dire (sarebbe bello se si potesse essere più espliciti)

m("Hello") = 5

che è destinato zucchero sintattico per

m.update("Hello", 5)

indipendente da ciò che è m. Questo è analogo a

m("Hello")

che è zucchero sintattico per

m.apply("Hello")

(sto solo leggendo "Programming in Scala").

Altri suggerimenti

@starblue è corretta. Si noti che è possibile anche fare le cose piuttosto creative con update come i valori di ritorno altro di quello che è stato assegnato. Ad esempio:

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

Questo funziona perché immutable.Map#update restituisce un'istanza della nuova Map. Sembra un po 'strano per l'occhio C-addestrato, ma ci si abitua ad esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top