我在Scala中有一个由Map[String, Any]
例如:
val map: Map[String, Any] = Map("key1" -> "strVal", "key2" -> List[Map[String, Any]](), "key3" -> Map("k1" -> "v1"))
现在的问题是,为了处理与键相对应的值,我每次都要使用asInstanceOf[]
。例如,
val key2Hash = map.getOrElse("key3", Map()).getOrElse("k1", "")
引发错误,因为检索到的地图的格式为Any
,我必须对以下所有情况使用asInstanceOf[]
:
val key2Hash = map.getOrElse("key3", Map()).asInstanceOf[Map[String, String]].getOrElse("k1", "")
有更好的方法吗?或者我不应该首先使用Map[String, Any]
开始?
答案 0 :(得分:3)
Map[String, Any]
?你不妨直接使用python!
开玩笑,你可以得到更好的"使用模式匹配强制转换语法:
map.get("key3") match {
case Some(anotherMap: Map[String, String]) => ...
case _ => ...
}