zoukankan      html  css  js  c++  java
  • 迭代器与iterable

    迭代器与iterable

    最近在学习ES6,有两个概念一直纠缠不清,就是迭代器与iterable,查阅了一些资料,简单来说迭代器就是包含next方法的对象,而iterable是包含可以在其值上迭代的迭代器的对象,但它必须支持一个函数,其名称是专门的ES6符号值 Symbol.iterator,简单来说就是iterable要包含一个Symbol.iterator方法,上代码吧:

    var iterator = {
        next() {
            return {
                done: false,
                value: 'Love xia'
            };
        }
    };
    

    如上便是一个实现了标准迭代器接口的迭代器,需要说明的是迭代器不可for of遍历。

    var iterable = {
        [Symbol.iterator]() {
            return this;
        }
    };
    

    上面是一个iterable,虽然毫无意义,我的理解就是拥有Symbol.iterator就拥有了资格,至于这个方法返回什么并不重要,为了有意义我们要返回迭代器,如下:

    var iterable = {
        [Symbol.iterator]() {
            return {
                next() {
                    return {
                        value: 'Love xia',
                        done: Math.random() > 0.7
                    }
                }
            };
        }
    };
    

    最后我们来做一个即是迭代器又是iterable的对象来总结一下:

    var it = {
        [Symbol.iterator]() {
            return this;
        },
        next() {
            return {
                value: 'Love xia',
                done: false
            };
        }
    };
    

    理解有误的地方还请不吝指出。

  • 相关阅读:
    P3275 [SCOI2011]糖果 题解
    hdu 2962 题解
    hdu 2167 题解
    hdu 2476 题解
    hdu 5418 题解
    2019.10.16&17小结
    poj 3061 题解(尺取法|二分
    poj 1852&3684 题解
    NOIP2017[提高组] 宝藏 题解
    一类经典问题的解法
  • 原文地址:https://www.cnblogs.com/idiv/p/10149562.html
Copyright © 2011-2022 走看看