当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《斯卡拉地图:神秘的语法糖?》经验,为你挑选了2个好方法。

我刚刚发现了scala的这种语法Map(这里以可变形式使用)

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

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



1> starblue..:

如果你的意思是(如果你能更明确的话会很好)

m("Hello") = 5

那意味着语法糖

m.update("Hello", 5)

独立于m是什么.这类似于

m("Hello")

这是语法糖

m.apply("Hello")

(我只是阅读"Scala编程".)


它在第40页.
啊,它在DefaultMapModel上!

2> Daniel Spiew..:

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


所以"m(K)= V"是m.update(K,V)的语法糖.怎么能说出这种情况呢?还有哪些方法可以使用语法糖?我甚至无法在scaladoc中看到Map(或其任何继承者)的方法更新.我怎么会知道Map有这样的方法?
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有