Scala:如何在 Scala 嵌套集合中查找值的类型
Scala : How to find types of values inside a scala nested collection
考虑 scala 中的以下变量:
val nestedCollection_1 = Array(
"key_1" -> Map("key_11" -> "value_11"),
"key_2" -> Map("key_22" -> "value_22"))
val nestedCollection_2 = Map(
"key_3"-> ["key_33","value_33"],
"key_4"-> ["key_44"->"value_44"])
以下是我的问题:
1) 我想读取变量nestedCollection_1
、nestedCollection_2
的值,并确保变量的值是格式
Array[Map[String, Map[String, String]]
和
Map[String, Array[String]]]
2)scala中是否可以获取变量的详细类型?即 nestedColelction_1.SOME_METHOD
应该 return Array[Map[String, Map[String, String]]
作为其值的类型
我不确定你的意思是什么。如果您只注释类型,编译器可以确保任何变量的类型:
val nestedCollection_2: Map[String, List[String]] = Map(
"key_3"-> List("key_33", "value_33"),
"key_4"-> List("key_44", "value_44"))
你可以在scala repl中定义变量的类型,或者在Intellij Idea中使用Alt + =
。
scala> val nestedCollection_2 = Map(
| "key_3"-> List("key_33", "value_33"),
| "key_4"-> List("key_44", "value_44"))
nestedCollection_2: scala.collection.immutable.Map[String,List[String]] = Map(key_3 -> List(key_33, value_33), key_4 -> List(key_44, value_44))
编辑
我想我现在明白你的问题了。以下是如何获取字符串类型:
import scala.reflect.runtime.universe._
def typeAsString[A: TypeTag](elem: A) = {
typeOf[A].toString
}
测试:
scala> typeAsString(nestedCollection_2)
res0: String = Map[String,scala.List[String]]
scala> typeAsString(nestedCollection_1)
res1: String = scala.Array[(String, scala.collection.immutable.Map[String,String])]
考虑 scala 中的以下变量:
val nestedCollection_1 = Array(
"key_1" -> Map("key_11" -> "value_11"),
"key_2" -> Map("key_22" -> "value_22"))
val nestedCollection_2 = Map(
"key_3"-> ["key_33","value_33"],
"key_4"-> ["key_44"->"value_44"])
以下是我的问题:
1) 我想读取变量nestedCollection_1
、nestedCollection_2
的值,并确保变量的值是格式
Array[Map[String, Map[String, String]]
和
Map[String, Array[String]]]
2)scala中是否可以获取变量的详细类型?即 nestedColelction_1.SOME_METHOD
应该 return Array[Map[String, Map[String, String]]
作为其值的类型
我不确定你的意思是什么。如果您只注释类型,编译器可以确保任何变量的类型:
val nestedCollection_2: Map[String, List[String]] = Map(
"key_3"-> List("key_33", "value_33"),
"key_4"-> List("key_44", "value_44"))
你可以在scala repl中定义变量的类型,或者在Intellij Idea中使用Alt + =
。
scala> val nestedCollection_2 = Map(
| "key_3"-> List("key_33", "value_33"),
| "key_4"-> List("key_44", "value_44"))
nestedCollection_2: scala.collection.immutable.Map[String,List[String]] = Map(key_3 -> List(key_33, value_33), key_4 -> List(key_44, value_44))
编辑
我想我现在明白你的问题了。以下是如何获取字符串类型:
import scala.reflect.runtime.universe._
def typeAsString[A: TypeTag](elem: A) = {
typeOf[A].toString
}
测试:
scala> typeAsString(nestedCollection_2)
res0: String = Map[String,scala.List[String]]
scala> typeAsString(nestedCollection_1)
res1: String = scala.Array[(String, scala.collection.immutable.Map[String,String])]