본문 바로가기

이터레이터

[JS: ES6+] 제너레이터/이터레이터 프로토콜로 구현하는 지연 평가 (1) #1 range와 느긋한 L.range 지연 평가의 정의 컴퓨터 프로그래밍에서 느긋한 계산법(Lazy evaluation)은 계산의 결과 값이 필요할 때까지 계산을 늦추는 기법이다. 지연 평가는 필요 할 때까지 계산을 늦추면서 불필요한 계산을 줄일 수 있다. 이러한 지연 평가는 3가지 이점을 가지고 있다. 불필요한 계산을 하지 않으므로 빠른 계산이 가능하다. 무한 자료 구조를 사용 할 수 있다. 복잡한 수식에서 오류 상태를 피할 수 있다. 그럼 이제부터 일반적인 평가와 지연평가를 비교해보록 하자. range 와 L.range 비교 숫자하나를 받고 그 숫자의 크기만한 배열을 리턴 후에 그 값들을 더하는 range함수를 선언해볼 것이다. const add = (a, b) => a + b; const rang.. 더보기
[JS: ES6+] 제너레이터와 이터레이터 #1 제너레이터와 이터레이터 제너레이터 함수란? ES6에서 도입된 제너레이터(Generator) 함수는 이터러블을 생성하는 함수이다. 제너레이터 함수를 사용하면 이터레이션 프로토콜을 준수해 이터러블을 생성하는 방식보다 간편하게 이터러블을 구현할 수 있다. 또한 제너레이터 함수는 비동기 처리에 유용하게 사용된다. function* gen() { yield 1; yield 2; yield 3; } const genIter = gen(); console.log(genIter.next()); // {value:1, done: flase} console.log(genIter.next()); // {value:2, done: flase} console.log(genIter.next()); // {value:3, d.. 더보기
[JS: ES6+] ES6에서의 순회와 이터러블:이터레이터 프로토콜 #1 기존과 달라진 ES6에서의 리스트 순회 ( for of, for i++) //기존 리스트 순회 const list = [1, 2, 3]; for (var i = 0; i< list.length; i++) { console.log(list[i]); // 1 2 3 } //기존 문자배열 순회 const str = 'abc'; for (var i = 0; i< str.length; i++){ console.log(str[i]); // a b c } //바뀐 리스트 순회 for (const a of list) { console.log(a); // 1 2 3 } //바뀐 문자배열 순회 for (const a of str) { console.log(a); // a b c } #2 Array, Set, Map을.. 더보기