Num*_*ock 5 javascript c# generator node.js ecmascript-6
是否有更简单的方法(比我使用的方式)迭代生成器?某种最佳实践模式或常见包装?
在C#中我通常会有一些简单的东西:
public class Program {
private static IEnumerable<int> numbers(int max) {
int n = 0;
while (n < max) {
yield return n++;
}
}
public static void Main() {
foreach (var n in numbers(10)) {
Console.WriteLine(n);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在JavaScript中尝试相同,这是我能想到的最好的:
function* numbers(max) {
var n = 0;
while (n < max) {
yield n++;
}
}
var n;
var numbers = numbers(10);
while (!(n = numbers.next()).done) {
console.log(n.value);
}
Run Code Online (Sandbox Code Playgroud)
虽然我会期待一些简单的事情......
function* numbers(max) {
let n = 0;
while (counter < max) {
yield n++;
}
}
for (let n in numbers(10)) {
console.log(n);
}
Run Code Online (Sandbox Code Playgroud)
......更具可读性和简洁性,但显然它并不那么容易?我已经尝试node 0.12.7过--harmony旗帜了node 4.0.0 rc1.如果可以使用此功能,我还需要做些什么来启用此功能(包括let我在使用时的使用情况)吗?
Ben*_*une 15
您需要使用for..of生成器的语法.这为可迭代对象创建了一个循环.
function* numbers(max) {
let n = 0;
while (n < max) {
yield n++;
}
}
Run Code Online (Sandbox Code Playgroud)
使用它:
for (let n of numbers(10)) {
console.log(n); //0123456789
}
Run Code Online (Sandbox Code Playgroud)