将任何集合作为参数Scala的函数

时间:2014-04-29 23:00:37

标签: scala

我一直在尝试编写一个函数,它接受任何继承Seq特征并对其执行操作的集合。我想出了这个:

def printAll[A, B <: Seq[A]] (xs: B) = {
  xs foreach println
} 

但是这个函数只适用于这样的参数:

printAll(Seq.empty)
printAll(List())

等。如何改进它以这种方式工作,例如:

printAll(List(1,2,3)) // scala> 1 2 3

1 个答案:

答案 0 :(得分:2)

如果您的目标是采用继承(或可以查看)Seq的任何集合,您可以这样做:

  def printAll[A](xs: Seq[A]) = {
     xs foreach println
  }

使用你的版本你必须给类型推理器一个提示:

printAll[Int, List[Int]](List(1, 2, 3))