Bedingungsketten
Syntax
$value -> switch {
$condition1: $expr1;
...
$conditionN: $exprN;
default: $exprDefault;
}
switch ($value) {
$pattern1: $expr1;
...
$patternN: $exprN;
default: $exprDefault;
}
Beschreibung
Wenn ein Wert über mehrere Fallunterscheidungen bestimmt werden muss, führt die Verschachtelung von mehreren if-Bedingungen zu schwer lesbarem Script. Stattdessen kann eine Bedingungskette mit Hilfe von switch definiert werden.
Der Wert einer solchen Bedingungkette ist die Auswertung des ersten Ausdrucks exprX, dessen Bedingung conditionX zu true auswertet. Wenn alle Bedingungen conditionX zu false auswerten, ist das Endergebnis die Auswertung von exprDefault. Der Default-Zweig der Kette kann entfallen. In diesem Fall ist der Wert des Gesamtausdrucks null, wenn alle Bedingungen zu false auswerten.
Wenn alle Bedingungen aus einem Gleichheitstest bestehen, kann die Pattern-Schreibweise verwendet werden. In dieser Form wertet sich die Bedingungskette zu demjenigen Ausdruck exprX mit kleinstem X aus, dessen Pattern patternX gleich dem Wert der Auswerung von value ist.
Folgende Beispiele sind äquivalent:
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 | Typ | Beschreibung | Pflicht | Default |
|---|---|---|---|---|
| value | Zahl/Zeichenkette/Wahrheitswert/Fachobjekt/Menge | Ein Wert, der an die Funktion switch übergeben wird, um die Fallunterscheidungen vorzunehmen. |
ja | |
| condition | Wahrheitswert | Eine Bedingung, die für value überprüft wird. |
Eins von beiden muss definiert sein. | |
| pattern | Zahl/Zeichenkette/Wahrheitswert/Fachobjekt/Menge | Ein Pattern, das direkt mit der Auswertung von value verglichen wird. Kann die Schreibeweise für switch verkürzen, wenn dieses nur auf Gleichheit prüft. |
||
| expr | Zahl/Zeichenkette/Wahrheitswert/Fachobjekt/Menge | Ein Ausdruck, der ausgewertet werden soll, wenn die dazugehörige condition bzw. pattern true ergibt. |
ja |
Rückgabewert
Typ: Zahl/Zeichenkette/Wahrheitswert/Fachobjekt/Menge
Die Auswertung der expr, die bei der Fallunterscheidung ausgewählt wurde.
Beispiele
Pattern
(x -> switch {
$x == 1: "one";
$x == 2: "a group";
$x >= 3: "a crowd";
default: "unknown";
})(1)
Ausgabe: one
Conditions
(x -> switch {
$x < 12: "child";
$x < 18: "teen";
$x < 70: "adult";
default: "senior";
})(16)
Ausgabe: teen
Komplexere Datentypen
{
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");
}
Ausgabe: 07.11.2021