有一个 IndexedSeq,如何从末尾向开始迭代它?
reverseIterator
。如果想要应用map,则使用reverseMap
。 foldLeft
和foldRight
在相反的方向遍历,因此可以将每个都视为反转列表上的另一个;reduceRight
和scanRight
同理。有一堆last
方法可用于查找靠近结尾而不是开头的东西。除此之外,如果您不想在内存中复制集合,则使用reverse
(重新创建整个集合)或.view.reverse.whatever
。对于简单的foreach
,通常使用reverseIterator
即可。请保留HTML标记。scala> val x = IndexedSeq(1,2,3,4)
x: IndexedSeq[Int] = Vector(1, 2, 3, 4)
scala> x.reverse.foreach(println)
4
3
2
1
或者,根据您在迭代时所做的事情,foldRight
可能是您想要的。 foldRight
是一种从右到左遍历集合的折叠方式。
scala> x.foldRight(0){ (item, total) => println("adding "+item); total + item }
adding 4
adding 3
adding 2
adding 1
res121: Int = 10