斯卡拉地图:神秘的语法糖?

时间:2009-03-25 10:15:25

标签: scala maps syntactic-sugar scala-collections

我刚刚发现了scala Map的这种语法(在 mutable 形式中使用)

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

现在我不确定这是否是语言中内置的语法 sugar ,或者这里是否有更基本的内容涉及地图扩展PartialFunction这一事实。谁能解释一下?

2 个答案:

答案 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训练的眼睛看起来有点奇怪,但你已经习惯了。