Condition chains
Syntax
$value -> switch {
$condition1: $expr1;
...
$conditionN: $exprN;
default: $exprDefault;
}
switch ($value) {
$pattern1: $expr1;
...
$patternN: $exprN;
default: $exprDefault;
}
Description
If a value must be determined over several case distinctions, the nesting of several if-conditions leads to script that is difficult to read. Instead, a condition chain can be defined using switch.
The value of such a condition chain is the evaluation of the first expression exprX
, whose condition conditionX
evaluates to true
. If all conditions conditionX
evaluate to false
, the final result is the evaluation of exprDefault
. The default branch of the chain can be omitted. In this case, the value of the total expression is null
, if all conditions evaluate to false
.
If all conditions consist of an equality test, the pattern notation can be used. In this form, the chain of conditions evaluates to the expression exprX
with smallest X
whose pattern patternX
is equal to the value of the evaluation of value
.
The following examples are equivalent:
x -> switch {
$x == 1: "one";
$x == 2: "a group";
$x >= 3: "a crowd";
default: "unknown";
}
x -> switch ($x) {
1: "one";
2: "two";
3: "three";
default: "unknown";
}
Parameter
Name | Type | Description | Mandatory | Default |
---|---|---|---|---|
value | Number/string/boolean/buiness object/set | A value to pass to the switch function to make case distinctions. |
yes | |
condition | boolean | A condition that will be checked for value . |
One of the two must be defined. | |
pattern | Number/string/boolean/buisness object/set. | A pattern that is directly compared to the evaluation of value . May shorten the write time for switch if this only checks for equality. |
||
expr | Number/string/boolean/buisness object/set | An expression to evaluate if the associated condition or pattern results in true . |
yes |
Return value
Type: Number/string/boolean/business object/set
The evaluation of the expr
selected in the case distinction.
Examples
Pattern
(x -> switch {
$x == 1: "one";
$x == 2: "a group";
$x >= 3: "a crowd";
default: "unknown";
})(1)
Output: one
Conditions
(x -> switch {
$x < 12: "child";
$x < 18: "teen";
$x < 70: "adult";
default: "senior";
})(16)
Output: teen
More complex data types
{
calendar = date(2021, 9, 7).toSystemCalendar();
mySwitch = x -> switch ($x) {
"add day": $calendar.withDayAdded(1).toDate();
"add month": $calendar.withMonthAdded(1).toDate();
"add year": $calendar.withYearAdded(1).toDate();
};
$mySwitch("add month");
}
Output: 07.11.2021