我有一堆 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/