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迭代器没有提供这样的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |