내장 메서드를 사용하여 목록을 반복기로 변환 할 때 문제가 있습니다.스칼라 : List.iterator가 빈 반복자를 생성합니다.
iterator.hasNext
을 호출하면iterator.size
의 값이 변경됩니다.iterator.hasNext == false
전에는 반복이 발생하지 않았습니다.
이러한 문제의 원인은 무엇입니까?
val list = scala.collection.immutable.List(1, 2, 3)
val iterator = list.iterator
println(iterator.size) // 3
println(iterator.hasNext) // false
println(iterator.size) // 0
Scala 버전 2.11.4 (OpenJDK 64 비트 서버 VM, Java 1.8.0_72)에서 로컬로 확인되었습니다.
IdeOne에서 확인했습니다. here.
Iterator docs API에서 : "달리 명시하지 않는 한, 메소드를 호출 한 후에 반복자를 사용해서는 안된다는 점에 유의하는 것이 특히 중요합니다." 여기에는'size' 메쏘드가 포함됩니다. – Brian