我有一个三级数据结构(缩进和换行可读性):
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) } }
有没有更简单的方式来修改分数的价值?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。