select Helper

template<size_t MaxDeps = 8, typename CondSource, typename Source1, typename Source2>
auto RxESP32::Helpers::Combinatorial::select(CondSource &condition, Source1 &source_a, Source2 &source_b, const typename Computed<decltype(source_a.get()), MaxDeps, 2>::Options &options = {})

Select between two sources based on a condition.

Creates a Computed that returns source_a when condition is true, otherwise source_b.

Since

v0.1.0

Signal<bool> use_metric(true);
Signal<float> celsius(25.0);
Signal<float> fahrenheit(77.0);

auto temperature = select(use_metric, celsius, fahrenheit);
Serial.println(temperature.get()); // 25.0

use_metric.set(false);
Serial.println(temperature.get()); // 77.0

Warning

  • Condition must be convertible to bool.

  • Both sources must have the same type.

Template Parameters:
size_t MaxDeps = 8

Maximum dependents for resulting Computed.

Parameters:
CondSource &condition

Source providing boolean condition.

Source1 &source_a

Source to use when condition is true.

Source2 &source_b

Source to use when condition is false.

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

Optional Computed configuration.

Returns:

Computed holding the selected value.

See Also