[TIL] 0301

yoon Y·2022년 3월 3일
0

2022 - TIL

목록 보기
48/109

generator 지연성

  • lazy evaluation === 제네레이션 서스펜션
  • 같은 iterable을 생성한다하더라도 일반 함수로 생성하는 것과 generator로 생성하는 것은 다르다
    -> 후자가 지연 평가를 하기 때문에 효율적임
  • 제너레이터에서는 yield를 이용해 반환할 값을 만들어낸다
  • 값을 만들어낼 때 while, for문과 같은 표현식을 사용할 수 있다
  • generator의 반환 값은 wellformed iterable이기 때문에 for of와 같은 반복기를 실행해야 순환되는 값을 얻을 수 있는데,
  • generator로 만들어진 iterable은 반복기를 실행할 때(next가 호출 될 때) generator함수 안의 순환 값을 만들어내는 while, for이 한번씩 실행된다
  • 일반적인 for, while문은 진행을 멈출 수 없는데 generator함수 안에서는 가능하다
  • 먼저 얼마나 값이 필요한지 파악한 후 계산하는 것!
  • 계산을 미루기 때문에 Lazy Evaluation이라고 부름
  • 체이닝으로 함수를 실행할 때 일반적인 순서가 아닌 가장 뒤에 있는 반복기부터 역으로 실행되고, 반환 값이 다시 순차적으로 전달된다
  • 배열을 새로 만들 때나, 이미 있는 배열을 가지고 새로운 배열을 만들어낼 때(각 요소에 연산을 할 때) 유용하다
profile
#프론트엔드

0개의 댓글