我一直在尝试编写一个函数,它接受任何继承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
答案 0 :(得分:2)
如果您的目标是采用继承(或可以查看)Seq的任何集合,您可以这样做:
def printAll[A](xs: Seq[A]) = {
xs foreach println
}
使用你的版本你必须给类型推理器一个提示:
printAll[Int, List[Int]](List(1, 2, 3))