Вопрос

Я только что выяснил этот синтаксис для scala Map (используется здесь в изменяемый форма)

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

Теперь я не уверен, является ли это синтаксическим сахар встроено в язык, или здесь происходит что-то более фундаментальное, связанное с тем фактом, что карта расширяет PartialFunction.Кто-нибудь может объяснить?

Это было полезно?

Решение

Если вы имеете в виду (было бы неплохо, если бы вы могли быть более откровенными)

m("Hello") = 5

это предназначенный синтаксический сахар для

m.update("Hello", 5)

независимо от того, что такое m.Это аналогично

m("Hello")

который является синтаксическим сахаром для

m.apply("Hello")

(Я просто читаю "Программирование на Scala".)

Другие советы

@starblue прав.Обратите внимание, что вы также можете делать довольно креативные вещи с update например, возвращаемые значения Другое чем то, что было назначено.Например:

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

Это работает, потому что immutable.Map#update возвращает экземпляр нового Map.Это выглядит немного странно для наметанного глаза, но к этому привыкаешь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top