加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 08:55:34 所属栏目:安全 来源:网络整理
导读:我正在使用 scala 2.9.1,当我尝试这段代码时: import scala.collection.mutableval a = mutable.Set(1,2,3,4,7,98,9,8)a.foreach(x = { println(x); a.remove(x) }) 结果是这样的 09821438 没有列出a的所有元素.在此之后,a变为Set(9,7)而不是空集.它对我来
我正在使用 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迭代器没有提供这样的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读