[JS] 제네레이터와 이터레이터

최정환·2021년 9월 14일
0

제네레이터 / 이터레이터

  • 제너레이터 : 이터레이터이자 이터러블을 생성하는 함수

🔧

function *gen() {
 yield 1;
 yield 2;
 yield 3;
 return 100;
}
let iter = gen();
log(iter[Symbol.iterator]() == iter) // true
log(iter.next()); // 1	false
log(iter.next()); // 2	false
log(iter.next()); // 3	false
log(iter.next()); // 100 true
for (const a of gen()) log(a)
// 1 2 3



odds

🔧

// 넣은 숫자부터 무한 ++
function *infinity(i=0){
	while(true) yield i++;
}

// l로 제한 iter가 받는 객체로 iter에 있는 a를 l만큼 반환시 멈춘다.
function *limit(l,iter){
	for (const a of iter){
    yield a;
      if(a==l) return;
    }
}

// l로 제한을 둔 만큼 홀수를 반환한다.
function *odds(l) {
  for (const a of limit(l,infinity(1))){
  	if(a % 2) yield a;
 }
}

let iter = odds(10);
log(iter.next()); // 1
....			  // 3 5 7
log(iter.next()); // 9

0개의 댓글