是否foreach
通過定義保證從第一個到最後一個(除非意外中斷)元素順序迭代主題集合(如果它定義了順序)?是否沒有任何編譯器優化開關可以將它制動(混洗序列)或計劃在未來的版本中使普通的foreach
平行?是否foreach by-definition保證在Scala中順序迭代主題集合?
13
A
回答
14
Foreach保證順序收集(即,正常層次結構,或任何由.seq
轉換的任何東西)。收集庫的平行部分(通過.par
或明確使用collection.parallel
的類從標準收集中獲得)幾乎保證而不是按順序進行評估。如果你想成爲不可知論者,你可以使用GenX
特徵集(例如GenSeq
);這些不會對執行訂單提供任何保證,也不會對工作同時進行。
2
爲了補充Rex的答案,foreach
在GenTraversableOnce
只保證所有的元素都會遍歷,除非你打斷它。性狀上層級鏈低級可提供額外的保證,例如:
TraversableOnce
和後代保證只有一個元件將通過在一個時間被迭代(未由GenTraversableOnce
保證!)。Seq
和後代保證元素將按照它們保存在集合中的順序遍歷。
既然你問到並行foreach
...
scala> (1 to 10).par foreach println
4
6
1
3
2
7
5
8
9
10
相關問題
- 1. 是否保證在PHP中按照數組順序迭代foreach?
- 2. .NET foreach語句是否保證以與構建集合相同的順序迭代集合?
- 3. Python中集合的迭代順序
- 4. 在Scala中迭代Java集合
- 5. C#字典<TKey,TValue>是否保證迭代順序?
- 6. foreach語句是按順序迭代還是隨機順序?
- 7. 集合上的高階函數是否保證順序執行?
- 8. scala迭代器#foreach性能問題
- 9. Objective-C中的快速枚舉是否保證了迭代的順序?
- 10. Scala HashMap:迭代插入順序?
- 11. Java *中的HashSet如何在迭代時不保證順序?
- 12. 在mule中迭代集合
- 13. 迭代COM集合沒有foreach或.Item()
- 14. Scala初始化Java迭代集合
- 15. 迭代std :: map的順序是否已知(並由標準保證)?
- 16. Python:迭代元組時,順序是否保留?
- 17. 在主幹集合上迭代
- 18. ASP.NET MVC迭代集合中的集合
- 19. bash for循環中的迭代次序是否有保證?
- 20. 是否有可能在調試時「看到」C#foreach循環的迭代集合?
- 21. foreach%dopar% - 保證結果的順序?
- 22. 迭代隊列<T>保證按隊列順序?
- 23. 是否保證初始化順序
- 24. 向量元素是否保證順序?
- 25. 是否保證SKNode.nodesAtPoint的順序?
- 26. std :: list的順序是否有保證?
- 27. FieldInfo [] Type.GetFields()的順序是否有保證?
- 28. Amazon S3是否保證書寫順序?
- 29. 是否保證KeyListeners的調用順序?
- 30. Ant是否保證文件集的順序?