• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

지연평가가 가능한 이유가..

20.10.31 16:41 작성 조회수 201

3

Lazy.range 함수가 이터러블 객체를 반환해서라기보다는

제너레이터의 yield를 통한 순차적인 제어권 위임때문이라고 보는게 더 맞지 않나요?

답변 1

답변을 작성해보세요.

4

안녕하세요 :)

질문자분께서 잘 알고 계시듯 yield가 순차적으로 제어권을 위임하는 것은 제너레이터가 이터레이터를 반환하고 그 이터레이터의 next 메서드를 통해 yield의 결과를 받으며 상호 동작하고 있기 때문에 지연 평가가 가능한 것이겠지요.

딱 어떤 부분이 지연평가를 가능하게 하는 가장 핵심 적인 부분인가라는 관점으로 바라본다고 한다면 저는 제너레이터는 수단이고 이터레이터가 오히려 더 핵심적인 아이디어라고 이야기할 수 있다고 생각합니다.

아래 링크는 타 회사 개발자분들께 오프라인으로 교육할 때 사용했던 자료여서 영상 공개는 어렵지만 코드를 보실 수 있는데요.

https://github.com/indongyoo/NAVER-Pay-functional-js/blob/master/1/QnA.html#L52

이 코드에서는 제너레이터 없이 ES5 문법 만으로 이터레이터를 만들어서 지연평가를 구현하고 있습니다. 결과적으로 제너레이터는 이 코드의 이터레이터와 동일한 이터레이터를 반환하는 것이 목적이라고 말씀드리고 싶습니다.

감사합니다.