迭代器和可迭代对象的区别

13
迭代器(Iterator)和可迭代对象(Iterable)有什么区别?它们之间是否存在亚类型关系?在一些真实应用场景中它们的实际区别是什么?
我试图阅读一些教程和规范,但它们都非常复杂。
(如果需要的话,我正在使用ES6和Babel。)

3
https://dev59.com/GGw15IYBdhLWcg3wCnYn - Iłya Bursov
1
对于那些投票支持关闭的人:这个问题怎么会太宽泛呢?我只是在询问一个特定语言中的两个相关且具体的概念。(我并不是在抱怨,只是想要更多信息。) - Karel Bílek
3
@Lashane那个问题是关于Java的,我正在使用ES6,这是一种不同的语言。 - Karel Bílek
1
提出的重复问题是关于另一种类似语言的,其中概念是相同的(可能是复制的)。 - Claies
2
从语言无关的角度来看:迭代器是一个对象,您可以使用它来迭代容器的内容,可迭代对象是一个可以为其内容提供迭代器的对象。不确定这是否有帮助,但也许会有用? - Conduit
@Claies 好的,这是我正在寻找的真正答案。这在ES6和Java中是相同的 :) 谢谢! - Karel Bílek
1个回答

10

来自《深入浅出ES6》一书,作者是Axel Rauschmayer博士:

可迭代对象是一种数据结构,希望将其元素提供给公众访问。它通过实现一个方法(键为Symbol.iterator),来实现这一目的。该方法是一个迭代器工厂。

迭代器是用于遍历数据结构元素的指针(类似于数据库中的游标)。


这个回答和提出的重复问题都对我有帮助,所以我将这个问题标记为已回答,将提出的重复问题标记为重复。 - Karel Bílek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接