scala中的mutable.Set.foreach的错误?

我正在使用 scala 2.9.1,当我尝试这段代码时:

import scala.collection.mutable
val a = mutable.Set(1,2,3,4,7,98,9,8)
a.foreach(x => { println(x); a.remove(x) })

结果是这样的

0
98
2
1
4
3
8

没有列出a的所有元素.在此之后,a变为Set(9,7)而不是空集.它对我来说看起来很奇怪,它是一个bug还是我们在做foreach时无法修改集合本身?

解决方法

在遍历或迭代集合时,您不能修改集合.

Scala和Java(以及大多数其他编程语言/库)中的情况相同.除了在Java中,Iterator类提供了一个remove方法,可以使用remove方法替换集合的remove方法,以便在使用该Iterator进行迭代时删除元素(但会使可能正在使用的该集合的任何其他迭代器无效). Scala迭代器没有提供这样的方法.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...