Module ddash.functional.cond

Create a function that encapsulates if/else-if/else logic

Example

alias lessThanZero = (a) => a < 0;
alias greaterOrEqualThan10 = (a) => a >= 10;
alias identity = (a) => a;
alias negate = (a) => -a;

alias abs = cond!(
    a => a == 1, 42,
    2, a => a * 2,
    3, 999,
    lessThanZero, negate,
    greaterOrEqualThan10, identity,
    a => a * 100,
);

assert(abs(1) == 42);
assert(abs(2) == 4);
assert(abs(3) == 999);
assert(abs(4) == 400);
assert(abs(5) == 500);
assert(abs(-3) == 3);
assert(abs(11) == 11);

alias str = cond!(
    a => a < 1, "1",
    a => a < 5, "5",
    a => a < 10, "10",
    "moar"
);

assert(str(0) == "1");
assert(str(2) == "5");
assert(str(7) == "10");
assert(str(11) == "moar");

Templates

NameDescription
cond Takes pairs of predicates and transforms and uses the first transform that a predicate return true for.