我对Scala还是很陌生,并试图了解如何在集合中存储不同类型的值。
例如,假设我具有对应类型的以下值:
12-Int
4.0-Float
“是学习和练习编码的最佳场所!” -String
我如何存储所有三个输入并对每个输入执行不同的逻辑?
答案 0 :(得分:6)
答案不正确:Seq[Any]
。这是任何类型的序列,因此您没有有关成员的信息,因此需要再次进行(可能不安全)强制转换或(可能不详尽)模式匹配。
有一个更好的答案:HList
是Shapeless库提供的一个异构列表。这将捕获有关每个成员的类型信息。请参见示例here。
有一个最佳答案:仔细考虑您是否完全需要它。 case class
在大多数情况下会更惯用。
答案 1 :(得分:1)
scala> Array(12, 4.0f, "Hello")
res1: Array[Any] = Array(12, 4.0, Hello)
scala> res1.foreach{ case i: Int => println("Integer"); case f: Float => println("Float"); case s: String => println("String")}
Integer
Float
String
但是-您可能应该听@erip的建议