I just發現在Java中有這樣的迭代器。 斯卡拉是否有迭代器,使用'set'和'remove'方法來迭代(和修改)像數組這樣的可變集合?
如果沒有這樣的迭代器,那麼是否有充分的理由呢?斯卡拉可變集合的迭代器?
回答
Scala目前沒有這樣的迭代器。
我懷疑它不會因爲
這樣的迭代器不是一般的(即他們只使用與可變集合),但消耗的命名空間。
因爲它們能迅速變得混亂思考與懶惰的操作,例如
takeWhile
(一起是它總是什麼明顯x.takeWhile(_<5).add(5)
該怎麼辦?一方面,操作的順序好像你應該採取先,然後添加;但另一方面,take
是懶惰而add
經常可以立即執行,所以將它們結合起來這種方式將是危險的天真)這樣的迭代器只是一個好主意算法具有非常專業的集藏品的(基本上是這樣。只有鏈表和樹;無論如何,添加和刪除在數組上使用都是愚蠢的,並且它對集合沒有多大意義)。
當普遍性和速度之間出現內在衝突時,Scala集合庫通常有利於普遍性。這種迭代器可以讓你以更具體的方式思考集合(即與底層數據結構更緊密的聯繫)。你可以想象一個圖書館做出了不同的選擇,但對於一個最有用的(並且仍然非常有效的)圖書館來說,斯卡拉館藏圖書館哲學可能是更好的選擇。關於同一主題
非常好的論點,謝謝。 我沒有看到takeWhile的危險。它就像x = x + 1。也許有些集合應該提供混合了幾種特性的專用迭代器?或mebye某種引用應返回像這裏: http://stackoverflow.com/questions/2799128/how-to-get-ponter-reference-semantics-in-scala/2799208#2799208 – 2010-05-11 00:21:41
- 1. 斯卡拉 - 變換迭代到地圖
- 2. 如何迭代斯卡拉
- 3. 斯卡拉 - 迭代器被'消耗'
- 4. 斯卡拉並行無序迭代器
- 5. 斯卡拉迭代器圖和
- 6. 斯卡拉,擴展迭代器
- 7. 轉換斯卡拉ArrayBuffer到迭代器
- 8. 斯卡拉 - 迭代器和takeWhile
- 9. 斯卡拉迭代器抽象方法
- 10. 可變與不可變在斯卡拉集合
- 11. 可變的斯卡拉集合的不可修改的看法
- 12. 斯卡拉更新集合
- 13. 斯卡拉密封特徵的迭代?
- 14. 斯卡拉,集合,可變訪問範圍
- 15. 的Apache蜂巢例外NoClassDefFoundError的:斯卡拉/收集/迭代
- 16. 斯卡拉變化for循環可變聚集到不可變
- 17. 斯卡拉更新值,而迭代
- 18. 斯卡拉地圖從元組迭代
- 19. 迭代和過濾斯卡拉地圖
- 20. 斯卡拉 - 懶文件/ URL迭代
- 21. 定製mkString功能斯卡拉迭代
- 22. 斯卡拉 - 可變映射
- 23. 斯卡拉:過濾選項的集合
- 24. 斯卡拉的瞬態集合?
- 25. 在斯卡拉使用收益返回和迭代收集
- 26. 如何迭代混合類型數組在斯卡拉
- 27. 斯卡拉 - 火花 - 迭代結合對RDD
- 28. 斯卡拉解構然後重建一個可迭代的
- 29. 斯卡拉:重寫集合類型
- 30. 斯卡拉集合循環緩衝區
您應該複製(或意譯)的答案(S)你在郵件列表上拿到過這裏(爲後人)。 – 2010-05-10 16:09:22
@Randall。好吧,我給了鏈接以最大限度地發揮作用。 – 2010-05-11 00:34:45