可変マップを更新するこの方法に出くわしたImpatientの本のために、CayHorstmannのScalaを使用しています。
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
scores("Alice")
のヒットのようapply
ですMapLike.scala
。ただし、これは値を返すだけで、更新できるものは返しません。
好奇心から、不変のマップで同じ構文を試したところ、次のエラーが表示されました。
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
^
それに基づいて、それscores("Alice") = 5
はに変換されるscores update ("Alice", 5)
と思いますが、それがどのように機能するのか、あるいはそれがどのように可能であるのかさえわかりません。
それはどのように機能しますか?