繁体   English   中英

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

[英]Scala Map: mysterious syntactic sugar?

我刚刚发现了scala 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是什么。 这类似于

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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM