加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何访问和更新地图地图的可变地图中的值

发布时间:2020-12-16 19:06:48 所属栏目:安全 来源:网络整理
导读:我有一个三级数据结构(缩进和换行可读性): scala import scala.collection.mutable.Mapimport scala.collection.mutable.Mapscala val m = Map("normal" - Map("home" - Map("wins" - 0,"scores" - 0),"away" - Map("wins" - 0,"scores" - 0)))m: scala.col
我有一个三级数据结构(缩进和换行可读性):

scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map

scala> val m = Map("normal" -> Map("home" -> Map("wins" -> 0,"scores" -> 0),"away" -> Map("wins" -> 0,"scores" -> 0)))
m: scala.collection.mutable.Map[java.lang.String,scala.collection.mutable.Map[java.lang.String,Int]]] = 
Map((normal,Map(away -> Map(wins -> 0,scores -> 0),home -> Map(wins -> 0,scores -> 0))))

访问最内层数据(分数)需要大量打字:

import org.scalatest.{Assertions,FunSuite}

class MapExamplesSO extends FunSuite with Assertions {
  test("Update values in a mutable map of map of maps") {
    import scala.collection.mutable.Map
    // The m map is essentially an accumulator
    val m = Map("normal" -> 
                Map("home" -> Map("wins" -> 0,"scores" -> 0)
                  )
          )
    //
    // Is there a less verbose way to increment the scores ?
    //
    assert(m("normal").apply("home").apply("scores") === 0)

    val s1 = m("normal").apply("home").apply("scores") + 1
    m("normal").apply("home").update("scores",s1)

    assert(m("normal").apply("home").apply("scores") === 1)

    val s2 = m("normal").apply("home").apply("scores") + 2
    m("normal").apply("home").update("scores",s2)

    assert(m("normal").apply("home").apply("scores") === 3)
  }
}

有没有更简单的方式来修改分数的价值?

我是一个Scala新手,所以对上述代码的所有其他意见也是欢迎的.

解决方法

你不必使用“申请”,只是用“()”

m("normal")("home")("scores") = 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读