제너레이터/이터레이터

dowon kim·2022년 6월 26일
0
<script>const log = console.log;</script>

제너레이터/이터레이터

  • 제너레이터: 이터레이터이자 이터러블을 생성하는 함수
<script>
    function *gen(){
      yield 1;
      if (false) yield 2;
      yield 3;
      return 100;
    }

    let iter = gen();
    log(iter[Symbol.iterator]() == iter); // true
    log(iter.next()); // 1
    log(iter.next()); // 3
    log(iter.next()); // 100 , done : true
    log(iter.next()); // done : true
</script>

<script>
  function* gen() {
    yield 1;
    if (false) yield 2;
    yield 3;
  }

  let iter = gen();
  log(iter[Symbol.iterator]() == iter); // true
  log(iter.next()); // 1
  log(iter.next()); // 3
  log(iter.next()); // done : true
  log(iter.next()); // done : true

  for (const a of gen()) log(a); // 1 , 3
  console.clear();
</script>

odds

<script>
    function *odds(){
      yield 1;
    }
</script>

for of, 전개 연산자, 구조 분해, 나머지 연산자

<script>
  log(...odds(10)); // 1 3 5 7 9
  log([...odds(10), ...odds(20)]); // [1,3,5,7,9,1,3,5,7,9,11,13,15,17,19]

  const [head, ...tail] = odds(5);
  log(head); // 1
  log(tail); // [3,5]

  const [a, b, ...rest] = odds(10);
  log(a); // 1
  log(b); // 3
  log(rest); // [5,7,9]
</script>

수강후기

강의 길이 자체는 짧지만 담고있는 내용의 깊이가 매우 깊다는 인상을 받는다. 이러한 강의를 그냥 듣고 이런게 있구나 하고 끝나면 내것으로 만들기 어렵고 , 이것을 활용한 복습으로 자연스럽게 이어지면서 마무리가 되어야 하는데 당장 이걸 어떻게 실제로 활용해야 하나 감이 잘 오질 않고 있어 강의 순서상 뒤에 이어질 활용편까지 배우고 있는 내용을 최대한 이해하는데 집중하고 활용편을 보고나서 내가 만들었던 코드를 리팩토링하는데 활용하며 복습을 하면 좋겠다는 감상이 남았다.

profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글