我刚刚发现了 scala 的这种语法Map
(在此处以可变形式使用)
val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)
现在我不确定这是否是语言中内置的语法糖,或者这里是否发生了更基本的事情,涉及到 map 扩展了PartialFunction
. 谁能解释一下?
我刚刚发现了 scala 的这种语法Map
(在此处以可变形式使用)
val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)
现在我不确定这是否是语言中内置的语法糖,或者这里是否发生了更基本的事情,涉及到 map 扩展了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
返回 new 的一个实例Map
。对于受过 C 训练的眼睛来说,这看起来有点奇怪,但你会习惯的。