如何在Scala中的数组中存储不同类型的输入?

nei*_*eil 0 generics scala scala-collections

我是Scala的新手,并试图了解我们如何在集合中存储不同类型的值.

例如,假设我有以下相应类型的值:

12 - Int
4.0 - Float
"是学习和练习编码的最佳场所!" -String

如何存储所有三个输入并在每个输入上执行不同的逻辑?

eri*_*rip 6

答案很糟糕:Seq[Any].这是任何类型的序列,因此您没有关于成员的信息,并且需要再次进行(可能不安全)强制转换或(可能非详尽的)模式匹配.

有一个更好的答案:HList,这是一个由Shapeless库提供的异构列表.这将捕获有关每个成员的类型信息.在这里查看示例.

有一个最好的答案:仔细考虑你是否需要这个.case class大多数情况下, es往往会更加惯用.