filter Helper

template<size_t MaxDeps = 8, typename Predicate, typename Source>
auto RxESP32::Helpers::Transformation::filter(Source &source, Predicate &&predicate, const typename Computed<decltype(source.get()), 1, MaxDeps>::Options &options = {})

Filter source values based on a predicate.

Creates a Computed that only updates when the predicate returns true. When false, the last valid value is retained.

Since

v0.1.0

Signal<int> values(0);
// Only positive values
auto positive = filter(values, [](int v) { return v > 0; });

values.set(5);   // positive.get() == 5
values.set(-10); // positive.get() == 5 (unchanged)
values.set(20);  // positive.get() == 20

Warning

Predicate must accept source value type and return bool.

Template Parameters:
size_t MaxDeps = 8

Maximum dependents for the resulting Computed.

Parameters:
Source &source

Source to filter.

Predicate &&predicate

Function that returns true to accept the value.

const typename Computed<decltype(source.get()), 1, MaxDeps>::Options &options = {}

Optional Computed configuration.

Returns:

Computed that holds filtered values.

See Also