代码之家  ›  专栏  ›  技术社区  ›  oxbow_lakes

scala map:神秘的句法糖?

  •  9
  • oxbow_lakes  · 技术社区  · 16 年前

    我刚刚发现scala的语法 Map (在这里使用) 易变的 形式)

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

    现在我不确定这是否是句法上的 内置于语言中,或者是否有一些更基本的事情正在发生,涉及到一个地图扩展了一个 PartialFunction . 有人能解释一下吗?

    2 回复  |  直到 14 年前
        1
  •  14
  •   starblue    16 年前

    如果你是说(如果你能更明确一点就好了)

    m("Hello") = 5
    

    它的目的是为了

    m.update("Hello", 5)
    

    与m无关。这类似于

    m("Hello")
    

    哪个是句法上的糖分

    m.apply("Hello")
    

    (我只是在读“scala中的编程”。)

        2
  •  5
  •   Daniel Spiewak    16 年前

    @右旋是正确的。注意,你也可以用 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训练的人来说,这看起来有点奇怪,但你已经习惯了。

    推荐文章