Frage

Ich habe gerade diese Syntax für eine scala Map fand heraus (verwendet hier in wandelbar Form)

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

Jetzt bin ich nicht sicher, ob diese syntaktische ist Zucker gebaut in der Sprache, oder ob etwas fundamentalere ist hier los Einbeziehung der Tatsache, dass eine Karte ein PartialFunction erstreckt. Könnte jemand erklären?

War es hilfreich?

Lösung

Wenn Sie meinen, (es wäre schön, wenn man noch deutlicher sein könnte)

m("Hello") = 5

das ist syntaktischen Zucker, die für

m.update("Hello", 5)

unabhängig von dem, was m. Dies ist analog zu

m("Hello")

das ist syntaktischer Zucker für

m.apply("Hello")

(Ich lese gerade "Programming in Scala").

Andere Tipps

@starblue ist richtig. Beachten Sie, dass Sie auch tun können, eher kreative Dinge mit update wie Rückkehr Werte andere als das, was zugewiesen. Zum Beispiel:

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

Das funktioniert, weil immutable.Map#update eine Instanz der neuen Map zurückgibt. Es sieht ein wenig seltsam an die C-geübtes Auge, aber man gewöhnt sich dran.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top