Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 从选项[Any]=Some(映射)中获取值_Scala - Fatal编程技术网

Scala 从选项[Any]=Some(映射)中获取值

Scala 从选项[Any]=Some(映射)中获取值,scala,Scala,我在一个尚未使用的数据类型中有以下数据选项[Any]=Some(Map: 如何从内部地图中提取数据,例如,我想获取标签。是否需要将其转换为什么?如果您知道地图的类型(或者,至少知道标签的类型及其值),您可以使用作为实例将其拔出: val a = Option[Any](Map("a" -> "b", 1 -> 2)) a.flatMap(_.asInstanceOf[Map[Int, Int]].get(1)) // Some(2): Option[Int] 通常情况下,最好不要

我在一个尚未使用的数据类型中有以下数据选项[Any]=Some(Map:


如何从内部地图中提取数据,例如,我想获取标签。是否需要将其转换为什么?

如果您知道地图的类型(或者,至少知道标签的类型及其值),您可以使用
作为实例将其拔出:

val a = Option[Any](Map("a" -> "b", 1 -> 2))

a.flatMap(_.asInstanceOf[Map[Int, Int]].get(1))
// Some(2): Option[Int]
通常情况下,最好不要使用
作为
的替代品,而是在手前确定类型…然后您可以更简单地使用:


这是可行的,但我反对绕过类型系统,除非你没有其他选择。@marios 100%同意。最后一段应该是:不要使用实例,因为通常有更好的方法。在Scala中(如Java中)您几乎可以将任何类型转换为其他类型。99%的情况下,这是一种代码味道,因为您仍然可以执行您想要的操作,而无需将类型系统抛出窗口。
val a = Option[Any](Map("a" -> "b", 1 -> 2))

a.flatMap(_.asInstanceOf[Map[Int, Int]].get(1))
// Some(2): Option[Int]
a.flatMap(_.get("label"))