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