sto usando Scala 2.9.1, quando provo questo codice:Un bug di mutable.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) })
il risultato è stato qualcosa di simile
0
98
2
1
4
3
8
che non elenca tutti gli elementi di una. Dopo questo, a diventa Set (9, 7) invece di set vuoto. Sembra molto strano per me, è un bug o semplicemente non possiamo modificare il set stesso quando si fa foreach?
Perché il downvote? Penso che sia una domanda molto valida per qualcuno di nuovo per Iterators e come funzionano –
Non ho visto nulla di simile, ma si potrebbe ottenere un risultato simile con 'a.flatMap (x => {println (x); if (cond) Nessun altro Some (x)}) 'che restituirà un nuovo set con gli elementi' None' rimossi. – jcern
Non solo è una domanda valida, duplica http://stackoverflow.com/questions/2803085/iterators-for-mutable-collections-in-scala e http://stackoverflow.com/questions/4417994/scala-remove -in-posto-tutti-elementi-di-un-listbuffer-che-soddisfano-una-condizione e http://stackoverflow.com/questions/2500548/che-è-il-proper-way-to-remove-elements -from-a-scala-mutable-map-using-a-predi –