我刚刚发现此语法一个阶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("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的一个实例。这看起来有点奇怪的C-训练有素的眼睛,但你习惯了它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top