我有一堆SomeType[T]
类型的对象。就像其中一些是SomeType[String]
,有些是SomeType[Int]
等。我想编写一个函数来获取这些可变大小的集合(但可能是不同类型的)。
如果我知道类型完全相同,我可以使用以下内容:
def someFun[T](inputs: SomeType[T]*): = {
// do something here on the list of inputs.
}
如何使其成为通用的任何想法,以便获得具有可能不同类型的输入列表? (例如inputs: SomeType[String]
和inputs: SomeType[Int]
)
顺便说一句,我不想使用SomeType[_]
,因为我稍后需要输入类型信息。
答案 0 :(得分:1)
我不确定你需要什么样的类型信息,但如果你所要做的就是直接对输入做出反应(没有,比方说,把它传递给另一个函数等),那么下面的方法就可以了:
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 ...
}
AFAIK,无形的HList
并没有解决这个问题,因为它仍然需要预先设置类型。