实现方法toIterator的Scala泛型

Mic*_*tte 1 generics collections iterator scala

我需要一个函数,它将接收一个数组,一个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()) 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

^但它不适用于Array [T]

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

Jea*_*let 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
Run Code Online (Sandbox Code Playgroud)

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