All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.rouz.flo.ValueFold Maven / Gradle / Ivy

package io.rouz.flo;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Stream;

import io.rouz.flo.TaskContext.Value;

/**
 * A function that folds a {@link List} of {@link Value}s into a {@link Value} of a {@link List}.
 *
 * 

It can be used with a {@link Collector} to fold a {@link Stream} of {@link Value}s. */ final class ValueFold implements Function>, Value>> { private final TaskContext taskContext; ValueFold(TaskContext taskContext) { this.taskContext = Objects.requireNonNull(taskContext); } static ValueFold inContext(TaskContext taskContext) { return new ValueFold<>(taskContext); } @Override public Value> apply(List> list) { Value> values = taskContext.immediateValue(new ArrayList<>()); for (Value tValue : list) { values = Values.mapBoth(taskContext, values, tValue, (l, t) -> { l.add(t); return l; }); } return values; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy