Ich verwende scala 2.9.1, wenn ich diesen Code versuchen:Ein Bug von veränderbar.Set.foreach in scala?
import scala.collection.mutable
val a = mutable.Set(1,2,3,4,7,0,98,9,8)
a.foreach(x => { println(x); a.remove(x) })
das Ergebnis war so etwas wie
0
98
2
1
4
3
8
, die nicht alle Elemente einer Liste haben. Danach wird a zu Set (9, 7) statt leerer Satz. Es sieht sehr seltsam für mich aus, ist es ein Fehler oder wir können das Set selbst nicht ändern, wenn wir foreach machen?
Warum der Downvote? Ich denke, es ist eine sehr gültige Frage für jemanden, der Iteratoren neu ist und wie sie arbeiten. –
Ich habe nichts dergleichen gesehen, aber Sie könnten ein ähnliches Ergebnis mit 'a.flatMap (x => {println (x); if (cond) None else Einige (x)}) 'die einen neuen Satz mit den' None' Elementen zurückgeben werden. – jcern
Es ist nicht nur eine gültige Frage, es dupliziert http://StackOverflow.com/Questions/2803085/iterators-for-mutable-Collections-in-Scala und http://StackOverflow.com/Questions/4417994/ScalaRemove -in-place-all-elements-of-a-listpuffer-die-erfüllen-eine-bedingung und http://stackoverflow.com/questions/2500548/was-ist-die-automatische-weg-zu-entfernen-elemente -from-a-scala-veränderbar-map-using-a-predi –