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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |