목록이나 생성기를 입력으로 사용할 수있는 함수를 작성하려고합니다. 예를 들어,이 기능 :for 루프에서 for ES6 javascript를 어떻게 재사용합니까?
function x(l) {
for (let i of l) {
console.log(i);
}
for (let i of l) {
console.log(i);
}
}
나는이처럼 실행하는 경우 :
x([1,2,3])
그것은 표시됩니다
1
2
3
1
2
3
지금 내가 입력으로 발전기를 사용하려면 :
function *y() {
yield 5
yield 6
yield 7
}
다음은 작동하지 않습니다.
x(y())
x(y)
출력은 다음과 같습니다
5
6
7
undefined
내가 그것을 작동하게 할 수있는 내가 그렇게해야합니까?
자바의 측면에서, 상기 기능 y
은 이고 생성기y()
은 반복자이다. [1,2,3]
은 목록이고 Java에서는 목록이 생성자입니다. 그러나 javascript for 루프는 반복자을 다시 시작해야한다는 것을 의미합니다. 이것은 for 루프가 생성자가 아닌 반복자에서 작동한다는 자바 스크립트의 결함처럼 보입니다.
좋아요! 이제 이해가된다. y는 생성자 함수이고, y()는 반복자이며, Symbol.iterator로 작성한 내용은 반복 가능한 iterable이며 재사용 할 수 있습니다. for 루프는 iterator 또는 iterable을 가질 수있다. 나는 당신의 단 하나의 라이너가 나를 위해 일할 수 있도록 반복 가능한 기능을 원했습니다. 감사! – Eyal