首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scala: Scala集合中的可遍历特征和可迭代特征有什么不同?

Scala: Scala集合中的可遍历特征和可迭代特征有什么不同?
EN

Stack Overflow用户
提问于 2011-09-15 10:56:05
回答 2查看 18.7K关注 0票数 104

我已经研究了this question,但仍然不理解可迭代特征和可遍历特征之间的区别。有人能解释一下吗?

EN

回答 2

Stack Overflow用户

发布于 2011-09-15 15:12:51

把它看作是吹口水和吸口水的区别。

当你调用Traversableforeach或它的派生方法时,它会一次一个地将它的值输入到你的函数中--这样它就可以控制迭代了。

但是,使用Iterable返回的Iterator,您可以从中提取值,并控制何时自己移动到下一个值。

票数 229
EN

Stack Overflow用户

发布于 2019-06-07 06:38:50

丹尼尔的回答听起来不错。让我看看我能不能用我自己的话说。

所以Iterable可以给你一个迭代器,让你一次遍历一个元素(使用next()),然后随意停下来。为此,迭代器需要保持一个指向元素位置的内部“指针”。但是Traversable为您提供了foreach方法,可以一次遍历所有元素而不会停止。

像Range(1,10)这样的东西只需要有两个整数作为遍历对象的状态。但是Range(1,10)作为Iterable提供了一个迭代器,它需要使用3个整数作为state,其中一个是索引。

考虑到Traversable还提供foldLeft,foldRight,它的foreach需要以已知和固定的顺序遍历元素。因此,可以为Traversable实现迭代器。例如,定义迭代器= toList.iterator

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7425370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档