【问题标题】:How to store different types of input in an array in Scala?如何在Scala的数组中存储不同类型的输入?
【发布时间】:2023-03-21 00:33:01
【问题描述】:

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

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

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

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

【问题讨论】:

标签: scala generics scala-collections


【解决方案1】:

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

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

有一个最佳答案:仔细考虑你是否需要这个。 case classes大部分时间会更习惯用语。

【讨论】:

    【解决方案2】:
    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 的建议

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2017-06-26
      • 2021-08-29
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多