10

我刚刚发现了 scala 的这种语法Map(在此处以可变形式使用)

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

现在我不确定这是否是语言中内置的语法,或者这里是否发生了更基本的事情,涉及到 map 扩展了PartialFunction. 谁能解释一下?

4

2 回答 2

14

如果你的意思是(如果你能更明确一点就好了)

m("Hello") = 5

这是预期的语法糖

m.update("Hello", 5)

与 m 无关。这类似于

m("Hello")

这是语法糖

m.apply("Hello")

(我只是在阅读“Scala 编程”。)

于 2009-03-25T10:32:21.490 回答
5

@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返回 new 的一个实例Map。对于受过 C 训练的眼睛来说,这看起来有点奇怪,但你会习惯的。

于 2009-03-25T11:21:40.937 回答