不同类型的可变大小输入

时间:2016-04-11 19:36:07

标签: scala

我有一堆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[_],因为我稍后需要输入类型信息。

1 个答案:

答案 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并没有解决这个问题,因为它仍然需要预先设置类型。