我有一张 map
val m = Map(1->13, 2->Map(3->444, 4-> List("aaa", "bbb")))
我想获取它的嵌套值:
// these all lead to an error
m.get(2)(3)
m.get(2).get(3)
m.get(2).get.get(3)
我该怎么做?
最佳答案
你实际上可以做你想做的事,但它不是类型安全的。
m.get(2).flatMap{ case m2: Map[Int, _] => m2.get(3) }
因为你丢失了类型信息,所以你必须显式转换,所以如果你想获得列表的元素,你应该这样做:
m.get(2).flatMap{ case m2: Map[Int, _] => m2.get(4) }.map{ case l: List[_] => l(1) }
你应该尽量保存类型信息。至少你可以使用 Either
。
关于scala - 访问嵌套 map 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932358/