Fachkonzept - Musterabgleich
Einen Musterabgleich verwenden
Auch in dieser Situation wird der Eintrittspreis mit einer Fallunterscheidung beschrieben. Die Fallunterscheidung wird hier mit der Vorgabe von Werten für den Wochentag realisiert.
Eintrittspreis: MO, DI, MI: 4 € DO, FR : 5 € SA, SO : 6 €
Eine solche Fallunterscheidung könnte man mit einem if
-Ausdruck implementieren.
eintrittspreis tag =
if tag == "MO" then
4
else if tag == "DI" then
4
else
...
Alternativ kann man hier einen case
-Ausdruck nutzen.
eintrittspreis tag =
case tag of
"MO" -> 4
"DI" -> 4
"MI" -> 4
"DO" -> 5
"FR" -> 5
"SA" -> 6
"SO" -> 6
_ -> 0
Mit einem case-Ausdruck kann man eine Fallunterscheidung mit einem Musterabgleich bilden.
Ein case
-Ausdruck gibt einen Ausdruck für das Muster vor und beschreibt dann die unterschiedlichen Fälle
mit Werten, die der Musterausdruck annehmen kann. Für jeden vorgegebenen Wert wird die Datenverarbeitung mit einen hierfür vorgesehenen Ausdruck
beschrieben. Beachte, dass immer alle möglichen Werte des Musterausdrucks abgedeckt werden müssen.
Das realisiert man meist mit Hilfe des _
, das für alle anderen Werte steht.
Die Abbildung verdeutlicht diesen Aufbau eines case-Ausdrucks.
Eine Fallunterscheidung kann man auch mit einem Musterabgleich (man sagt auch Pattern-Matching) realisieren. Die verschiedenen Fälle beschreibt man durch Werte, die der Ausdruck für das Muster annehmen kann.
Der Begriff Muster wirkt eventuell noch seltsam, da wir bisher immer feste Werte als Musterausdruck hatten. In späteren Kapiteln werden wir weitergehende Möglichkeiten kennenlernen, die auch flexiblere Musterausdrücke zulassen.