scala - 访问嵌套 map 的值

标签 scala

我有一张 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)

我该怎么做?

最佳答案

你有lost type information .

你实际上可以做你想做的事,但它不是类型安全的。

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/

相关文章:

scala - 如何在随机森林中使用 Spark 特征重要性?

scala - 是否可以描述 : (any-arity => 1-arity)? 的函数

scala - 理解 Scala 开发工具

xml - 如何根据 Scala 中的选项添加或不添加 XML 标记?

scala - 将 IntelliJ 指向已安装的 Scala

scala - 纯函数式编程中的 "value"是什么?

java - SBT:如何将类的实例打包为 JAR?

scala - 如何解决 java.lang.NumberFormatException : null 问题

swing - scala 2.10.1 中的 SimpleGUIApplication

scala - spark - select 中的条件语句