Pergunta

Eu só descobri esta sintaxe para um Map scala (usado aqui no mutável formulário)

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

Agora, eu não tenho certeza se este é sintática açúcar embutido para a linguagem, ou se algo mais fundamental está acontecendo aqui envolvendo o fato de que um mapa estende uma PartialFunction. Alguém poderia explicar?

Foi útil?

Solução

Se você quer dizer (que seria bom se você pudesse ser mais explícito)

m("Hello") = 5

que se destina açúcar sintático para

m.update("Hello", 5)

independente do que m é. Isto é análogo ao

m("Hello")

que é açúcar sintático para

m.apply("Hello")

(Eu só estou lendo "Programação em Scala".)

Outras dicas

@starblue está correto. Note que você também pode fazer coisas bastante criativas com update tais como valores de retorno outros do que o que foi atribuído. Por exemplo:

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

Isso funciona porque immutable.Map#update retorna uma instância da nova Map. Parece um pouco estranho para o olho treinado-C, mas você se acostumar com isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top