Hayır, bir hata değil. Bu normal davranış.
Yineleyiciler değişebilir şeylerdir. Onları işaretçi olarak düşünebilirsiniz. Bir yineleyiciden size bir sonraki öğeyi vermesini istediğinde, bir nokta daha ileriye hareket eder.
Size boyut vermesini istediğinde, her öğeyi işaret ettiği sırayla, her seferinde bir konum sağa hareket ettirerek geçirir. iterator.hasNext == false
öğelerini taşımak için daha fazla öğeye sahip olmadığında, boyutu döndürür. Ama o zaman bütün unsurları tüketmiş olacak. size
için yeni bir arama yapıldığında, yineleyici zaten sonunda konumlandırılmış, bu yüzden hemen daha iyi neler olduğunu anlamaya için 0
dönecektir, bunu yapabilirsiniz:
val it = Iterator(1, 2, 3, 4)
//it: >1 2 3 4
it.next() //ask for the next element
//it: 1 >2 3 4
it.next()
//it: 1 2 >3 4
println(it.size) // prints 2
//it: 1 2 3 4 >
println(it.size) // prints 0
http Gönderen://www.scala-lang.org/api/current/#scala.collection.Iterator "Aksi belirtilmedikçe, * bir yöntemin çağrılmasından sonra asla bir yineleyici kullanmaması gerektiğini belirtmek özellikle önemlidir." en önemli istisnalar da tek soyut yöntemler: sonraki ve hasNext. " –