i

Verarbeitung von Listen

Verarbeitung mehrerer Klartext-Wörter

Unser Programm soll dahingehend erweitert werden, dass es eine Liste von Klartexten verarbeiten kann. Im ersten Schritt wollen wir die Liste von Wörtern unverändert anzeigen. Das erreichen wir mit folgendem Ausdruck für eine feste Liste von Wörtern:

div [] [ text "HALLO", text "HUND", text "KATZE", text "MAUS", text "TIGER" ]
Elm

Für beliebige Listen von Klartextwörtern funktioniert das so natürlich nicht. Wir benötigen eine Funktion, welche die text-Funktion auf jedes Element einer Liste anwendet und uns eine neue Liste von Textknoten zurückgibt.

Abbildung von String zu Textknoten

Das ist genau das, was die Funktion List.map macht:

List.map text [ "HALLO", "HUND", "KATZE", "MAUS", "TIGER" ]
-- -> gibt eine Liste von fünf Textknoten, also eine 'List (Html msg)' zurück.
Elm

Im Kontext unseres div-Beispiels sieht das dann so aus:

div [] (List.map text [ "HALLO", "HUND", "KATZE", "MAUS", "TIGER" ])
Elm

Insgesamt ergibt sich dann folgender Code für unsere Seite:

view klartextliste =
    div [] (List.map text klartextliste)


main =
    view [ "HALLO", "HUND", "KATZE", "MAUS", "TIGER" ]
Elm

Aufgabe 1

Probiere das selbst aus und erkläre die Funktionsweise von List.map in diesem Kontext mit eigenen Worten.

Verschlüsselung mehrerer Wörter

Nun soll die Ansicht so erweitert werden, dass zu jedem Klartextwort auch der verschlüsselte Text angezeigt wird. Dazu müssen wir die Funktion view mit dem Schlüssel und der Liste von Wörtern aufrufen können:

main =
    view 3 [ "HALLO", "HUND", "KATZE", "MAUS", "TIGER" ]
Elm

Wir benötigen nun statt der text-Funktion eine Funktion, die aus einem Schlüssel und einem Klartextwort die DOM-Elemente für den Klartext und den verschlüsselten Text erzeugt. Die Funktion viewWort erledigt das für ein einzelnes Wort und gibt genau wie text etwas vom Typ Html msg zurück.

viewWort : Int -> String -> Html msg
viewWort schluessel wort =
    div []
        [ text wort
        , text " "
        , text (verschiebeText schluessel wort)
        ]
Elm

Wir können nun die Funktion viewWort als Parameter für List.map verwenden, um aus einer List String eine List (Html msg), also eine Liste von DOM-Teilbäumen zu erzeugen:

List.map

Aufgabe 2

Passe deine Seite so an, dass sie Listen von Klartextwörtern verarbeitet.

Suche

8.2.3.2.7Verarbeitung von Listen
Kopieren durch Anklicken

Rückmeldung geben