Iterator   이터레이터, 반복자

(2021-04-12)

Iterable, 이터러블, Iterable Object, Iterable 객체, 이터러블 객체, 열거 가능 객체, 반복 가능한 객체, Iterator Object, Iterator 객체, 이터레이터 객체

1. 이터러블, 이터러블 객체, 이터레이터 이란?

  ㅇ 반복 가능 (Iterable, 이터러블, 열거 가능)
     - 해당 객체 내 요소들을 하나씩 순환하며, 
     - 이를 꺼내서 사용(처리) 가능함을 말함

  ㅇ 반복 가능 객체 (Iterable Object, 이터러블 객체)
     - 그 내부에 반복 가능한 요소,기능들을 갖춘 객체
        . 객체 내 값들의 반복 처리 동작의 정의를 허용하는 객체

  ㅇ 반복자 (Iterator, 이터레이터)
     - 연속된 반복 값들을 만들어 낼 수 있고, 
     - 이들을 하나하나 세밀하게 제어 가능한 방법이 정의된 객체
        . next 메소드를 갖음


2. [자바스크립트]  이터러블 객체 (Iterable Object)

  ㅇ 그 내부에 반복 동작이 정의되고, 이터레이터를 반환할 수 있는 객체
     - 사실상, 배열 객체를, 보다 일반화시킨 객체로 볼 수 있음

  ㅇ 대표적인 내장 이터러블 객체 例)
     - Array 객체, String 객체, Map 객체, Set 객체 등
        . 이들 내부에 Symbol.iterator라는 메소드가 구현되어 있어, 반복 동작이 가능함

  ㅇ 이터러블 객체의 특징
     - 그 내부에 Symbol.iterator 라는 특별한 형태의 함수가 있게 됨
        . Symbol.iterator 메소드 이란?
           .. 매개변수가 없는 함수 형태로써,
           .. 이터레이터를 만들어 반환하는 특별한 함수 임

     - 이터레이터(반복자)를 만들어 반환 가능 함

  ㅇ 이터러블 객체의 사용처
     - for of 문에서, 반복 처리 가능

     - 전개 연산자 (...)에서, 사용 가능
        . 例) Set 객체에 대해 `전개 연산자 ...`를 사용하는 경우
           .. const arr = ['one','two','three','one','two','four'];
           .. const s = new Set(arr); // 배열을 중복 없는 Set 객체로 변환
           .. console.log([...s]); // => ['one','two','three','four']

     - 분할 대입 연산(Destructuring Assignment)에서, 사용 가능


3. [자바스크립트]  이터레이터 (Iterator, 반복자)

  ㅇ 주어진 객체 내 요소별로 하나씩 접근하며,
     - 반복 처리(이터레이션,Iteration)가 가능한 구조를 갖춘 객체

  ㅇ 이터레이터 객체의 특징 
     * 반복 처리를 단계별로 세밀하게 제어할 수 있도록 만들어진 객체
     - next 메소드를 갖음
        . next 메소드의 반환값으로 value,done 속성을 갖는 객체를 줌
           .. 이 경우 반환되는 것이 요소 값이 아니라, 
           .. 반복 처리용 프로퍼티를 갖는 반복자 객체임
        . 즉, next 반환 객체는, { value : 요소값, done : 논리값 } 임
           .. value 프로퍼티 : 꺼낸 값이 이곳에 저장됨 (현재 위치의 요소값)
           .. done 프로퍼티 : 반복의 끝인지를 나타내는 논리값
     - 만일, 모두 반복 처리하고, 다시 처음부터 하려면,
        . 이터레이터를 다시 얻어야 함 

  ㅇ 반복자 생성 例) 
     - const iterator1 = array.values(); 
        . 배열 메소드 values()를 사용하여, 반복자 생성
     - const iterator2 = array[Symbol.iterator](); 
        . 이터러블 객체 내 특별한 함수 Symbol.iterator을 키로 하여, 반복자 생성

     * 위에서,
       . 배열메소드 values() 또는 [Symbol.iterator]의 반환값으로,
        . 반복자 (iterator1 또는 iterator2)가 생성 됨

  ㅇ 반복자를 통한 순환 例)
     - for (let value of mapIterator) { ...}


[JS 객체] 1. JS 객체 2. JS 객체 구분 3. JS 객체의 생성 저장 접근 4. JS 클래스 5. 프로토타입 객체 6. 프라미스 객체 7. 일급 객체 8. 래퍼 객체 9. 콘솔 객체 10. this 참조 11. 이터레이터 12. 제너레이터 13. 범용 객체 (Object object)
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   전기전자공학
  5.   방송/멀티미디어/정보이론
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산 기초용어
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램, 프로그래밍
      1.   프로그래밍 언어론
      2.   프로그래밍 방법론
      3.   객체지향 프로그래밍
      4.   자료표현코드
      5.   자료구조
      6.   알고리즘
      7.   시스템 소프트웨어
      8.   프로그래밍언어 종류
            1. 프로그래밍 언어
        1.   C
        2.   C++
        3.   자바(Java)
        4.   자바스크립트
              1. JavaScript
              2. JS 기초 문법
          1.   JS 변수,타입,논리식
          2.   JS 구문,연산자
          3.   JS 실행환경
          4.   JS 함수
          5.   JS 객체
            1.   1. JS 객체
                2. JS 객체 구분
                3. JS 객체의 생성 저장 접근
                4. JS 클래스
                5. 프로토타입 객체
                6. 프라미스 객체
                7. 일급 객체
                8. 래퍼 객체
                9. 콘솔 객체
                10. this 참조
                11. 이터레이터
                12. 제너레이터
                13. 범용 객체 (Object object)
          6.   JS 배열/Map/Set
          7.   JS 활용
          8.   JS 웹문서 제어
        5.   PHP
        6.   파이썬
        7.   (기타 언어)
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공학(역학,기계,재료등)
  9.   설계/표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록     참고문헌