实现方法toIterator的Scala泛型

时间:2016-04-21 14:27:49

标签: scala generics collections iterator

我需要一个函数,它将接收一个数组,一个Map,一个List [几乎任何带有toIterator方法的容器],迭代它,然后打印它的元素。

我试过了:

def method[CollectionT <: TraversableLike[Any, Any]](collection: CollectionT, numElements: Int) {
  val iterator = collection.toIterator
  for(i <- 0 until numElements) {
    if(iterator.hasNext) {
      println(iterator.next()) 
    }
  }
}

^但它不适用于Array [T]

如何在Scala中创建一个遗传函数,它将接受具有&#34; toIterator: Iterator[A]&#34;的类的任何实例。方法

1 个答案:

答案 0 :(得分:5)

您可以在此处使用的常规类型是GenTraversable

scala> def printAll(coll: collection.GenTraversable[_]) = coll.foreach(println)
defined function printAll
scala> printAll("aaa")
a
a
a

scala> printAll(Array(1,2,3))
1
2
3

scala> printAll(Seq(4,5,6))
4
5
6

您也不需要迭代器。您可以更轻松地致电foreach或使用for理解。