Sto lavorando attraverso il libro Scala for the Impazient di Cay Horstmann, in cui mi sono imbattuto in questo modo di aggiornare una mappa mutevole.Come funziona la sintassi di aggiornamento della mappa di Scala [map (key) = newValue]?
scala> val scores = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
scores: scala.collection.mutable.Map[String,Int] = Map(Bob -> 3, Alice -> 10, Cindy -> 8)
scala> scores("Alice") // retrieve the value of type Int
res2: Int = 10
scala> scores("Alice") = 5 // Update the Alice value to 5
scala> scores("Alice")
res4: Int = 5
Sembra scores("Alice")
colpi apply
in MapLike.scala
. Ma questo restituisce solo il valore, non qualcosa che può essere aggiornato.
Per curiosità ho provato la stessa sintassi su una mappa immutabile, ed è stato presentato con il seguente errore,
scala> val immutableScores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
immutableScores: scala.collection.immutable.Map[String,Int] = Map(Alice -> 10, Bob -> 3, Cindy -> 8)
scala> immutableScores("Alice") = 5
<console>:9: error: value update is not a member of scala.collection.immutable.Map[String,Int]
immutableScores("Alice") = 5
^
Sulla base di questo, sto supponendo che scores("Alice") = 5
si trasforma in scores update ("Alice", 5)
, ma non ho idea come funziona, o come è anche possibile.
Come funziona?
Credo che sia solo zucchero sintattico. Non c'è una lezione profonda di base qui per quanto ho capito. – placeybordeaux
Come si può vedere, viene chiamato il metodo 'update', non il metodo' apply'. –
significa immutabile ** Sola lettura ** e mutabile significa ** Lettura/Scrittura ** in modo che il problema sia stato arabizzato –