scala - 不同类型的可变大小输入

标签 scala

我有一堆 SomeType[T] 类型的对象。就像其中一些是 SomeType[String],一些是 SomeType[Int] 等。我想编写一个函数来获取这些变量大小的集合(但是,可能是不同类型)。

如果我知道类型都是相同的,我可以使用如下所示的内容:

def someFun[T](inputs: SomeType[T]*): = { 
   // do something here on the list of inputs. 
}

有什么想法如何使其通用,以便获得可能不同类型的输入列表吗? (例如输入:SomeType[String]输入:SomeType[Int]) 顺便说一句,我不想​​使用 SomeType[_] 因为稍后我需要类型信息。

最佳答案

我不确定您需要类型信息做什么,但如果您所要做的就是直接对输入使用react(例如,不将其传递给另一个函数等),那么以下内容将起作用:

case class Box[A](a: A)

def someFun(boxes: Box[_]*) = 
  boxes.foreach {
    case Box(a: Int) => println(s"INT: $a")
    case Box(a: String) => println(s"STRING: $a")
    case _ => // and so on ...
  }

据我所知,shapeless 的 HList 并没有解决这个问题,因为它要工作,你仍然需要预先设置类型。

关于scala - 不同类型的可变大小输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36557711/

相关文章:

scala - Scala 中的初始化顺序

scala - 在 Scala 中将 Map[String, String] 转换为 Map[String, Int]

scala - Scala 3 中 "?=>"的含义是什么?

scala - 如何使用平面图分解数据集?

scala - 从Kafka读取json并将json写入其他Kafka主题

scala - 将.jar添加到classpath(Scala)

scala - Scala 中的多个 flatMap

scala - 为什么 Scala 将 Char 隐式转换为 Int?

scala - 如何修改 Nil 列表?

java - 将类路径传递给 buildr 中基于 java/scala 的项目中的自定义任务