scan (Iterator)
이터레이터의 누적 과정을 지연 평가 방식으로 내보내요. 모든 중간 결과를 내보내는 reduce라고 할 수 있어요.
typescript
const accumulated = scan(source, callback, initial);사용법
scan(source, callback, initial)
마지막 값만이 아니라 누적의 모든 중간 값이 필요할 때 scan을 사용하세요. 누적 합계, 누적 최댓값, 상태 기계 같은 것들이요. initial 값이 먼저 내보내지고, 그 뒤로 각 요소를 처리한 뒤의 누적값이 이어지기 때문에, 길이가 n인 입력은 n + 1개의 값을 만들어요. 이 "scan-left" 동작은 네이티브 이터레이터 헬퍼에 대응되는 것이 없어요.
typescript
import { scan } from 'es-toolkit/iterator';
// 초기값부터 시작하는 누적 합계.
scan([1, 2, 3].values(), (acc, x) => acc + x, 0).toArray();
// 반환 값: [0, 1, 3, 6]
// 누적값은 요소와 다른 타입일 수 있어요.
scan(['a', 'b'].values(), (acc, x) => acc + x, '').toArray();
// 반환 값: ['', 'a', 'ab']파라미터
source(Iterator<T>): 누적할 이터레이터예요.callback((accumulator: U, value: T, index: number) => U): 현재 누적값, 각 요소, 인덱스로 호출돼요. 다음 누적값을 반환해요.initial(U): 누적값의 초기값이에요. 첫 번째 값으로 내보내져요.
반환 값
(IteratorObject<U, undefined>): 초기값과 이어지는 각 누적값을 내보내는 지연 평가 이터레이터예요. 모든 네이티브 이터레이터 헬퍼(map, take, toArray, ...)를 갖추고 있어서 이어서 체이닝할 수 있어요.

