chunk
각각 최대 size개의 연속된 원소를 담은 리스트들의 지연 이터러블을 반환합니다.
Iterable<List<A>> chunk<A>(int size, Iterable<A> iterable)
FxAsyncIterable<List<A>> chunkAsync<A>(int size, FxAsyncIterable<A> iterable)
Fx<List<T>> Fx.chunk(int size) // chain
FxAsync<List<T>> FxAsync.chunk(int size)
강의
chunk는 평평한 시퀀스를 고정 크기 그룹으로 묶습니다 —
카드를 패로 나누거나, 결과 집합을 페이지로 자르거나, 하위 API에
n개씩 묶어 작업을 보내는 식입니다. 리스트를 하나 내보내기
전에 딱 size개만 버퍼링하므로, 아주 큰 소스에서도
지연 평가와 제한된 메모리 사용을 유지합니다. 소스가 딱 나누어떨어지지
않는 경우, 개수가 모자랄 수 있는 것은 마지막 청크뿐입니다.
비동기 버전인 chunkAsync는 청크 하나를 만들기 전에
size개를 await합니다 — 상류에
.concurrent(n)을 함께 쓰면 청크 하나 분량의 비동기 작업을
동시에 처리할 수 있습니다.
데모 1 · 기본
10개를 3씩 묶으면 마지막 청크가 짧게 남습니다.
데모 2 · 비동기
직접 해 보기
연습: 카드를 3장씩 패로 나눠 보세요.