我刚刚发现了scala Map
的这种语法(在 mutable 形式中使用)
val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)
现在我不确定这是否是语言中内置的语法 sugar ,或者这里是否有更基本的内容涉及地图扩展PartialFunction
这一事实。谁能解释一下?
答案 0 :(得分:14)
如果你的意思是(如果你能更明确的话会很好)
m("Hello") = 5
这是
的语法糖m.update("Hello", 5)
与m无关。这类似于
m("Hello")
是
的语法糖m.apply("Hello")
(我只是阅读“Scala编程”。)
答案 1 :(得分: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
会返回新Map
的实例。对C训练的眼睛看起来有点奇怪,但你已经习惯了。