带有 Map 和 For 的 Scala 迭代器
给定:
val list = List("one","two","three")
val it = list.toIterator
我可以运行:
list map ("_" +) -> List(_one, _two, _three)
for (i <- list) yield("_" + i) -> List(_one, _two, _three)
如果我在迭代器上运行相同的操作,我得到:
it map ("_" + ) -> Iterator[java.lang.String] = empty iterator
for (i <- it) yield("_" + i) -> Iterator[java.lang.String] = empty iterator
在运行 map/for 之后,我不应该返回另一个(非空)Iterator[String] 吗?
Given:
val list = List("one","two","three")
val it = list.toIterator
I can run:
list map ("_" +) -> List(_one, _two, _three)
for (i <- list) yield("_" + i) -> List(_one, _two, _three)
If I run the same on the iterator I get:
it map ("_" + ) -> Iterator[java.lang.String] = empty iterator
for (i <- it) yield("_" + i) -> Iterator[java.lang.String] = empty iterator
Shouldn't I get back another (non-empty) Iterator[String] after I run map/for on it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许您使用了迭代器?
由于迭代器是有状态的且不可重置,因此一旦使用它,它就是空的并且不能再次使用。
相反,您可以使用视图:
Maybe you used your iterator?
Since iterators are stateful and not resettable, once you used it, it is empty and can't be used again.
Instead, you can use views:
请参阅迭代器。
...
See Iterators.
...