Tôi đang sử dụng scala 2.9.1, khi tôi thử mã này:Lỗi của mutable.Set.foreach trong scala?
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) })
kết quả là cái gì đó như
0
98
2
1
4
3
8
mà không liệt kê tất cả các yếu tố của một. Sau đó, trở thành Set (9, 7) thay vì thiết lập rỗng. Nó trông rất lạ đối với tôi, có phải là một lỗi hay chúng ta không thể sửa đổi bản thân thiết lập khi làm foreach?
Tại sao bạn nên downvote? Tôi nghĩ rằng đó là một câu hỏi rất hợp lệ cho một người mới đến Iterator và cách họ làm việc –
Tôi đã không nhìn thấy bất cứ điều gì như thế, nhưng bạn có thể thực hiện một kết quả tương tự với 'a.flatMap (x => {println (x); if (cond) Không có gì khác Một số (x)}) 'sẽ trả về một tập mới với các mục' None' đã bị xóa. – jcern
Không chỉ là câu hỏi hợp lệ, nó còn sao chép http://stackoverflow.com/questions/2803085/iterators-for-mutable-collections-in-scala và http://stackoverflow.com/questions/4417994/scala-remove -in-place-all-elements-of-a-listbuffer-that-meet-a-condition và http://stackoverflow.com/questions/2500548/what-is-the-proper-way-to-remove-elements -from-a-scala-mutable-map-using-a-predi –