1.13 Pattern-Matching

► |  | Sprachebenen und Material zu Schreibe Dein Programm! / Die Macht der Abstraktion

1 | Die Macht der Abstraktion - Anfänger
2 | Die Macht der Abstraktion
3 | Die Macht der Abstraktion mit Zuweisungen
4 | Die Macht der Abstraktion fortgeschritten
5 | Konstruktionsanleitungen 1 bis 10
6 | Bilder konstruieren: "image.ss"
7 | Animationen: "world.ss"
8 | Turtle-Grafik: "turtle.ss"
9 | Abspielen von Audio-Dateien: "sound.ss"
10 | 3D-Liniengraphik: "line3d.ss"
11 | DMd A: Sprachen als Libraries
| Index

▼ | 1 | Die Macht der Abstraktion - Anfänger

1.1 | Definitionen
1.2 | Record-Typ-Definitionen
1.3 | Prozedurapplikation
1.4 | #t and #f
1.5 | lambda / λ
1.6 | Bezeichner
1.7 | cond
1.8 | if
1.9 | and
1.10 | or
1.11 | Signaturen
1.12 | Testfälle
1.13 | Pattern-Matching
1.14 | Parametrische Record-Typ-Definitionen
1.15 | Eigenschaften
1.16 | Primitive Operationen

On this page:

match

top ← prev up next →

#### 1.13`` Pattern-Matching

> syntax (match expr (pattern expr) ...)
> pattern |  | = |  | id
> |  | | |  | #t
> |  | | |  | #f
> |  | | |  | string
> |  | | |  | number
> |  | | |  | (constructor pattern ...)

Ein match- Ausdruck führt eine Verzweigung durch, ähnlich wie cond. Dazu wertet match zunächst einmal den Ausdruck expr nach dem match zum Wert v aus. Es prüft dann nacheinander jeden Zweig der Form (pattern expr) dahingehend, ob das Pattern pattern darin auf den Wert v paßt (“matcht”). Beim ersten passenden Zweig (pattern expr) macht match dann mit der Auswertung voh expr weiter.

Ob ein Wert v paßt, hängt von pattern ab:

- Ein Pattern, das ein Literal ist (#t, #f, Zeichenketten string, Zahlen number) paßt nur dann, wenn der Wert v gleich dem Pattern ist.

- Ein Pattern, das ein Bezeichner id ist, paßt auf jeden Wert. Der Bezeichner wird dann an diesen Wert gebunden und kann in dem Ausdruck des Zweigs benutzt werden.

- Ein Pattern (constructor pattern ...), bei dem constructor ein Record-Konstruktor ist (ein Konstruktor-Pattern), paßt auf v, falls v ein passender Record ist, und dessen Felder auf die entsprechenden Patterns passen, die noch im Konstruktor-Pattern stehen.

top ← prev up next →