2012-02-24 54 views

回答

14

Foreach保證順序收集(即,正常層次結構,或任何由.seq轉換的任何東西)。收集庫的平行部分(通過.par或明確使用collection.parallel的類從標準收集中獲得)幾乎保證而不是按順序進行評估。如果你想成爲不可知論者,你可以使用GenX特徵集(例如GenSeq);這些不會對執行訂單提供任何保證,也不會對工作同時進行。

2

爲了補充Rex的答案,foreachGenTraversableOnce只保證所有的元素都會遍歷,除非你打斷它。性狀上層級鏈低級可提供額外的保證,例如:

  • TraversableOnce和後代保證只有一個元件將通過在一個時間被迭代(未由GenTraversableOnce保證!)。
  • Seq和後代保證元素將按照它們保存在集合中的順序遍歷。

既然你問到並行foreach ...

scala> (1 to 10).par foreach println 
4 
6 
1 
3 
2 
7 
5 
8 
9 
10 
相關問題