Elm:
Code in Funktionen organisieren

Wie geht das:

Hier ist ein Stück Elm Code mit einer einfachen Funktion, um einen Benutzer zu begrüßen:

module Main exposing (..)

import Html exposing (text)

greetUser : String -> String
greetUser userName =
    "Hallo, " ++ userName ++ "!"

main =
    text (greetUser "Casey")

Führe es aus, und du erhältst die Ausgabe: “Hallo, Casey!”

Nehmen wir an, du möchtest es jetzt persönlicher gestalten. Extrahiere mehr Funktionalität!

module Main exposing (..)

import Html exposing (text)

greetUser : String -> String -> String
greetUser greeting userName =
    greeting ++ ", " ++ userName ++ "!"

personalGreeting : String -> String
personalGreeting userName =
    greetUser "Howdy" userName

main =
    text (personalGreeting "Casey")

Jetzt, wenn du es ausführst: “Howdy, Casey!” Magie? Nein, nur Funktionen, die ihr Ding tun.

Tiefere Einblicke

Früher bestand Code oft aus einer langen Abfolge von Anweisungen (denke an Spaghetticode). Es war ein Alptraum, diesen zu warten. Dann kam die strukturierte Programmierung und mit ihr die Funktionen. Elm, wie seine funktionalen Programmierungsvorfahren, verlässt sich stark auf Funktionen zur Organisation.

Du kannst Funktionen verschachteln und damit Closures erstellen oder sie rein halten für Einfachheit. Elm fördert letzteres: reine Funktionen mit wohldefinierten Eingaben und Ausgaben, was das Debuggen und Testen erleichtert.

Elm Funktionen können auch höherer Ordnung sein, was bedeutet, dass sie andere Funktionen akzeptieren oder zurückgeben können. Dies eröffnet eine Welt der Komponierbarkeit. Allerdings hat Elm, anders als einige andere Sprachen, keine Funktionsüberladung; jede Funktion muss einen eindeutigen Namen haben.

Zusätzlich legt Elm ein starkes statisches Typsystem auf, das nicht nur die Typen überprüft, sondern diese auch ableitet, wodurch Boilerplate-Code reduziert wird.

Im Vergleich zu Alternativen wie prozedurale oder objektorientierte Codeorganisation in anderen Sprachen, betont Elms Ansatz Einfachheit und Vorhersehbarkeit. Elm hat keine Objekte oder Klassen. Du organisierst Code mit Funktionen und Modulen anstelle von Klassen und Instanzen.

Siehe auch

Um tiefer einzutauchen, schau dir diese Ressourcen an: