将scala中的'Any'类型转换为'Map'类型
如何在scala中将type将scala中的'Any'类型转换为'Map'类型,scala,Scala,如何在scala中将typeAny转换为typeMap 现在我有一个val: poop: scala.collection.immutable.Map[String,Any] = Map(scenario0 -> Map(street -> Bulevard, city -> Helsinki), scenario1 -> Map(street -> Bulevard, city -> Helsinki)) 我正在尝试提取与scenario0和scenari
Any
转换为typeMap
现在我有一个val:
poop: scala.collection.immutable.Map[String,Any] = Map(scenario0 -> Map(street -> Bulevard, city -> Helsinki), scenario1 -> Map(street -> Bulevard, city -> Helsinki))
我正在尝试提取与scenario0
和scenario1
关联的Map
对象,并将这些映射传递到一个函数中。对于(键1),您可以将任何投射到映射[a,B]
for (key <- myMap.keySet) myFunc(myMap(key))
例如,下面是字符串到另一个映射的Map
scala> val mapping : Map[String, Any] = Map("key1" -> Map ("key1.1" -> "value1"), "key2" -> Map("key1.2" -> 100))
mapping: Map[String,Any] = Map(key1 -> Map(key1.1 -> value1), key2 -> Map(key1.2 -> 100))
scala> mapping("key1")
res1: Any = Map(key1.1 -> value1)
将Any
转换为Map[A,B]
scala> mapping("key1").asInstanceOf[Map[String, Any]]
res3: Map[String,Any] = Map(key1.1 -> value1)
然后传递到函数
scala> def processSomething(mapping: Map[String, Any]) = println(mapping.keys)
processSomething: (mapping: Map[String,Any])Unit
scala> processSomething(mapping("key1").asInstanceOf[Map[String, Any]])
Set(key1.1)
2)另一种方法是匹配mainMap(“键”)
的结果
这样,您就可以处理结果不是Map
的情况。(使用强制转换时,会引发类强制转换异常。)
下面的例子
mapping("key1") match {
case valueMap : Map[String, Any] => processSomething(valueMap)
case _ => println("key1 is not Map")
}
看来钥匙并不重要,功能总是一样的poop.values.map(x=>f(x.asInstanceOf[map[String,Any]])
Agree,如果我想处理所有键,这是最好的方法。cc@LIONDACER我正在寻找的是。感谢您的详尽回答!非常感谢!错误:类型不匹配;发现:Any
必需:Map[\uu,\u]
仅作为旁注:您不应该有Map[String,Any].如果你能避免这种情况发生,请尽量考虑他不能回答的前一个问题。这是入站数据。