2012-03-19 17 views

回答

9

你可以打電話reverseIterator如果你只是想從結束到開始遍歷它。如果你想申請一張地圖,reverseMapfoldLeftfoldRight以相反的方向遍歷,因此每個可以被認爲是反轉列表中的另一個;同樣與reduceRightscanRight。有一堆last方法來找到接近結束而不是開始的東西。如果您不想在內存中複製集合,則可以使用reverse(重新創建整個集合)或.view.reverse.whatever。對於一個簡單的foreachreverseIterator通常會訣竅。

+0

我沒有記得這種方法存在!我很高興當天沒有時間回答問題... :-) – 2012-03-22 01:18:33

+0

@ DanielC.Sobral - 我記得它,因爲我對它一點都不感到失望;我更喜歡我的集合界面的簡單性,而不是使用我能想象的每種便利方法。 – 2012-03-22 04:27:12

4

你可以將它取反:

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 
+0

謝謝。在查看方法列表時,我不知何故錯過了顯而易見的'reverse'。 – Ivan 2012-03-19 02:35:26