微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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迭代器没有提供这样的方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐