use*_*692 8 foreach scala mutable scala-collections
我正在使用scala 2.9.1,当我尝试这段代码时:
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) })
Run Code Online (Sandbox Code Playgroud)
结果是这样的
0
98
2
1
4
3
8
Run Code Online (Sandbox Code Playgroud)
没有列出a的所有元素.在此之后,a变为Set(9,7)而不是空集.它对我来说看起来很奇怪,它是一个bug还是我们在做foreach时无法修改集合本身?
sep*_*p2k 10
在遍历或迭代集合时,您不能修改集合.
Scala和Java(以及大多数其他编程语言/库)中的情况相同.除了在Java中,Iterator该类提供了一种remove方法,可以使用该方法代替集合的remove方法在使用该方法进行迭代时删除元素Iterator(但会使可能正在使用的该集合的任何其他迭代器无效).Scala迭代器没有提供这样的方法.
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |