reduce<C extends Object, P1 extends Object, P2 extends Object> static method

ChildPod<Object, C> reduce<C extends Object, P1 extends Object, P2 extends Object>(
  1. TResponderFn2<P1, P2> responder,
  2. TNullableReducerFn2<C, P1, P2> reducer
)

Reduces 2 Pods into a ChildPod. See PodReducer1.reduce — the same single-invocation guarantee applies here.

Implementation

static ChildPod<Object, C>
    reduce<C extends Object, P1 extends Object, P2 extends Object>(
  TResponderFn2<P1, P2> responder,
  TNullableReducerFn2<C, P1, P2> reducer,
) {
  late (GenericPod<P1>, GenericPod<P2>) cached;
  return ChildPod<Object, C>(
    responder: () {
      cached = responder();
      return [cached.$1, cached.$2];
    },
    reducer: (_) => reducer(cached.$1, cached.$2),
  );
}