zipWith

두 이터러블을 zip하면서 각 쌍을 함수로 결합하는 것을 한 번에 처리합니다.

Iterable<C> zipWith<A, B, C>(C Function(A a, B b) f, Iterable<A> iterable1, Iterable<B> iterable2) FxAsyncIterable<C> zipWithAsync<A, B, C>(FutureOr<C> Function(A a, B b) f, FxAsyncIterable<A> iterable1, FxAsyncIterable<B> iterable2)

강의

zipWithzip 뒤에 그 쌍들에 대한 map을 붙인 것과 정확히 같습니다 — 실제로 FxDart의 구현도 map((r) => f(r.$1, r.$2), zip(...))입니다. 중간의 (A, B) 레코드는 필요 없고 결합한 결과만 원할 때 꺼내 쓰세요. 나란히 놓인 두 리스트를 곱하거나, 이름과 나이를 하나의 라벨로 포맷하는 식으로 말이죠.

zip과 마찬가지로 두 입력 중 짧은 쪽에서 멈추며, 비동기 형태인 zipWithAsynczipAsync의 쌍마다 병렬로 끌어오는 동작을 그대로 물려받습니다. zipWith에는 Fx 체인 형태가 없으므로 최상위 함수를 직접 호출하세요 (또는 .zip(other).map((r) => f(r.$1, r.$2))로 직접 만들어도 됩니다).

데모 1 · 기본

데모 2 · 비동기

직접 해 보기

연습: zipWith로 쌍마다 품목 합계 (price * quantity)를 계산해 보세요.

관련 항목: zip — 이 함수가 기반으로 삼는, 쌍만 만드는 버전 · zipWithIndex — 증가하는 인덱스와 짝짓기 · map