【问题标题】:How to create an iterator within a class如何在类中创建迭代器
【发布时间】:2016-09-23 00:50:23
【问题描述】:

对于 ES2015 js 类,我想要一个迭代器。所以我尝试了以下

export default class MyList {
    iterator* () {
        // Dummy implementation
        let counter = 0;
        while(true) {
            yield counter++;
        }
    }
}

因为我想做

let list = new MyList();
    iter = list.iterator();

while(!iter.done()) { ... }

例如。

但是,这不起作用。所以问题是,在类中实现迭代器的首选方法是什么?

【问题讨论】:

  • “但是,这不起作用” 是一个非常糟糕的问题描述。根据接受的答案,您应该收到语法错误。这是重要信息!
  • 错误是SyntaxError: missing : after property id,这对于那些已经使用该语言有一段时间的人来说是有用的,但对于新手来说却不是,特别是因为避免使用冒号表示法以支持缩短的对象方法表示法。只是我的 3 美分。
  • 我希望标题能说明一切,这就是为什么我省略了一些细节

标签: javascript iterator ecmascript-6


【解决方案1】:

'*' 应该在函数名之前。像这样:

export default class MyList {
    *iterator() {
        // Dummy implementation
        let counter = 0;
        while(true) {
            yield counter++;
        }
    }
}

不客气。

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 2011-09-05
    • 2018-05-20
    • 2021-12-06
    • 1970-01-01
    • 2018-04-14
    • 2011-05-14
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多