使用Scala 2.13.10的本地解释器,我正在运行以下代码
scala> val it = Iterator("a", "number", "of", "words")
val it: Iterator[String] = <iterator>
scala> it.size
val res0: Int = 4
scala> it.next()
val res14: String = a
我假设运行命令it.size将遍历迭代器,并且it.next()将失败,正如Scala文档中所指出的
it.size返回的元素个数。注意:这次行动结束后,它将结束!
https://docs.scala-lang.org/overviews/collections-2.13/iterators.html
我错过了什么?
1条答案
按热度按时间nr9pn0ug1#
概述并没有完全描述
size
的行为。对于knownSize
是非负的迭代器(如从有限集合创建的迭代器),size
实际上并不遍历迭代器。也就是说,
size
是Iterator
上的方法之一,在调用它之后,唯一安全的做法是不再使用迭代器(几乎Iterator
上除了hasNext
或next
之外的所有方法都是这样的方法)。