В книге «Программирование в Scala» Мартина Одерского есть простой пример в первой главе:
var capital = Map("US" -> "Washington", "France" -> "Paris")
capital += ("Japan" -> "Tokyo")
Вторая строка также может быть записана как
capital = capital + ("Japan" -> "Tokyo")
Мне любопытно, что такое + =. В классе Map я не нашел метод + =. Мне удалось такое же поведение в собственном примере, как
class Foo() {
def +(value:String) = {
println(value)
this
}
}
object Main {
def main(args: Array[String]) = {
var foo = new Foo()
foo = foo + "bar"
foo += "bar"
}
}
Я спрашиваю себя, почему запись + = возможна. Это не работает, если метод в классе Foo называется test, например. Это привело меня к обозначению префикса. Является ли знак + префиксом для знака присваивания (=)? Может кто-нибудь объяснить это поведение?